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.
This commit is contained in:
15
test/wcc/data/alias_def_addr_nonaddr/case.ww
Normal file
15
test/wcc/data/alias_def_addr_nonaddr/case.ww
Normal file
@@ -0,0 +1,15 @@
|
||||
//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;
|
||||
};
|
||||
Reference in New Issue
Block a user