Issue #980: A nested list’s element is not linked to the mut parameter it is handed to (NK1102)

Open and answer this issue on GitHub.

ready · opened 2026-10-29 · updated 2026-10-29 · 0 comments

This is the remaining step 2 of #977 (b976 report). It is a defect: ADR-282 D12 makes the element of a declared list a position, and D16 links a list with a position to where it goes, with one tier (ADR-353 D8 builds on this).

Probe

fn add(mut all: Vec[String], x: String) { all.push(x.clone()) }
let mut lists: Vec[Vec[String]] = [[], ["q"]]
add(lists[1], "r")          // NK1102
let mut e = lists[1]; add(e, "r")   // NK1102

A flat list passes: let mut one: Vec[String] = ["q"]; add(one, "s").

Cause: in tools/text_tiers.nika, source_of/place_of have no Expr::Index case, and Declaring carries no path inside its owner.

To build

  1. Give Declaring (or source_of) a path, with a list’s element at [0], and use it in link_from and in the untyped let of tier_let.
  2. Add a tests/compiler test with both probes.

Back to Open Issues