Files
ww/test/wcc/data/alias_def_addr_nonaddr/case.ww
Hojun-Cho 094ccc63f0 test: migrate 944_alias_def_addr to @test + runww reject, retire C twin (fold-3)
#88 alias/def/address-of family: 5 value rows -> test/lang/alias_def_addr_test.ww (primitive-only asserts), 1 reject (str-def-non-addressable, shared body 'cannot take address of non-addressable def') -> runww //ww:error dual-stage carrier. byteid floor 53->54.
2026-06-22 17:10:22 +09:00

16 lines
739 B
Plaintext

//ww:error "cannot take address of non-addressable def"
// Lifted from test/wcc/944_alias_def_addr_run.c reject row "def_nonaddr"
// (#88/#149/#147/rule-7): a `def S: str` is inlined and has NO DATA symbol,
// so `&S` is not addressable and MUST loud-fail in both stages, not emit a
// wild deref. The substring is the shared diagnostic body — byte-identical on
// both stages (no file:line, no "ww: " prefix — the prefix differs cs vs ww
// only by being emitted, the body is shared verbatim). This is the error-path
// pin for the #88 alias-def address-of family: the gate fix must keep firing
// the rule-7 tail for genuinely symbol-less defs.
package main;
def S: str = "hello";
export fn main() i32 = {
let p = &S;
return 0;
};