#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.
16 lines
739 B
Plaintext
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;
|
|
};
|