// issue 0105 / F1 — a UNIQUE expression const's nested leaf folds against the // const's AUTHOR source, not the reading module's. `a.sx` declares `M :: 1` and // `K :: M + 1` (= 2); `b.sx` declares a DIFFERENT same-name `M :: 10` (no `K`). // `main` flat-imports both, so the reader sees two `M`s — but it reads only `K`, // which is unique to `a.sx`. Folding `K`'s RHS must pin `M` to A's source (→ 1), // giving `K = 2`, coherently whether `K` is read as a runtime VALUE (`print K`) // or used as an array DIMENSION (`[K]u8`) → val=2 len=2. Without the author pin // the nested leaf would re-select `M` from `main`'s view (two `M`s → ambiguous / // non-const dimension). #import "modules/std.sx"; #import "0789-modules-same-name-const-leaf-author-pin/a.sx"; #import "0789-modules-same-name-const-leaf-author-pin/b.sx"; read_dim :: () -> i64 { arr : [K]u8 = ---; return arr.len; } main :: () -> i32 { print("val={} len={}\n", K, read_dim()); 0 }