wcc/ww: document the unreachable N_TARRAY destructure arm

An array-typed tuple element cannot reach paramfieldsize: the checker
rejects composite tuple elements (check.ww:2150, the #60 gate), pinned
by test 832. The rule-7 note at the fall-through now records the proof
instead of an open task. Task #39 closes as unreachable.
This commit is contained in:
2026-06-13 00:10:59 +09:00
parent 347f6c42c8
commit 0f0d2d2c1c
3 changed files with 33 additions and 15 deletions

View File

@@ -39263,11 +39263,17 @@ fn paramfieldsize(t: *node) i32 = {
let ps: i32 = primsize(nm);
if (ps > 0) { return ps; };
};
// rule-7: N_TARRAY (an array-typed tuple/struct field) is intentionally
// not sized here — deferred to task #39. No F7 repro or spec-§5-c4
// member feeds it, so it stays on the 8B default (mis-sized, latent)
// until a consumer surfaces; the divergence is pointed at the task, not
// silent.
// rule-7: N_TARRAY (an array-typed tuple field) is intentionally not
// sized here — and PROVABLY unreachable, not merely latent (#39).
// paramfieldsize's only callers are tuple-field contexts (the N_TTUPLE
// recursion above + the cgforrange destructure sizers below), and the
// checker loud-REJECTS an array/struct/nested-tuple tuple element at
// N_TTUPLE resolution (check.ww:2150, "composite element deferred to
// task #60"; pinned both-stage by test 832_tuple_elem_overlong). So no
// tuple field can carry an N_TARRAY type — this arm cannot be reached
// until #60's inline-composite layout lands and lifts that gate. The 8B
// fall-through is correct-by-vacuity; reopen WITH #60, adding the arm
// (read t.type_.size, twin of the #53 tagged arm above).
return 8;
};

View File

@@ -3711,11 +3711,17 @@ fn paramfieldsize(t: *node) i32 = {
let ps: i32 = primsize(nm);
if (ps > 0) { return ps; };
};
// rule-7: N_TARRAY (an array-typed tuple/struct field) is intentionally
// not sized here — deferred to task #39. No F7 repro or spec-§5-c4
// member feeds it, so it stays on the 8B default (mis-sized, latent)
// until a consumer surfaces; the divergence is pointed at the task, not
// silent.
// rule-7: N_TARRAY (an array-typed tuple field) is intentionally not
// sized here — and PROVABLY unreachable, not merely latent (#39).
// paramfieldsize's only callers are tuple-field contexts (the N_TTUPLE
// recursion above + the cgforrange destructure sizers below), and the
// checker loud-REJECTS an array/struct/nested-tuple tuple element at
// N_TTUPLE resolution (check.ww:2150, "composite element deferred to
// task #60"; pinned both-stage by test 832_tuple_elem_overlong). So no
// tuple field can carry an N_TARRAY type — this arm cannot be reached
// until #60's inline-composite layout lands and lifts that gate. The 8B
// fall-through is correct-by-vacuity; reopen WITH #60, adding the arm
// (read t.type_.size, twin of the #53 tagged arm above).
return 8;
};

View File

@@ -39263,11 +39263,17 @@ fn paramfieldsize(t: *node) i32 = {
let ps: i32 = primsize(nm);
if (ps > 0) { return ps; };
};
// rule-7: N_TARRAY (an array-typed tuple/struct field) is intentionally
// not sized here — deferred to task #39. No F7 repro or spec-§5-c4
// member feeds it, so it stays on the 8B default (mis-sized, latent)
// until a consumer surfaces; the divergence is pointed at the task, not
// silent.
// rule-7: N_TARRAY (an array-typed tuple field) is intentionally not
// sized here — and PROVABLY unreachable, not merely latent (#39).
// paramfieldsize's only callers are tuple-field contexts (the N_TTUPLE
// recursion above + the cgforrange destructure sizers below), and the
// checker loud-REJECTS an array/struct/nested-tuple tuple element at
// N_TTUPLE resolution (check.ww:2150, "composite element deferred to
// task #60"; pinned both-stage by test 832_tuple_elem_overlong). So no
// tuple field can carry an N_TARRAY type — this arm cannot be reached
// until #60's inline-composite layout lands and lifts that gate. The 8B
// fall-through is correct-by-vacuity; reopen WITH #60, adding the arm
// (read t.type_.size, twin of the #53 tagged arm above).
return 8;
};