test(ffi-linkage): xfail example for extern data global (Phase 1.2c)
Add examples/1225-ffi-extern-global.sx — '__stdinp : *void extern;' references libSystem's stdin pointer via the bare 'extern' modifier on a typed var decl (the extern-named counterpart of the #foreign global in examples/1205). Hand-authored snapshot expects the success output. RED: 1225 is the sole corpus failure (636 ran, 1 failed) — parse error, 'extern' after a type annotation is not yet accepted in the var-decl path. Phase 1.2d parses it and lowers the extern global. xfail commit per the cadence rule.
This commit is contained in:
15
examples/1225-ffi-extern-global.sx
Normal file
15
examples/1225-ffi-extern-global.sx
Normal file
@@ -0,0 +1,15 @@
|
||||
// extern data global (FFI-linkage stream, Phase 1.2): reference a symbol
|
||||
// defined elsewhere (here libSystem's __stdinp) via the bare `extern`
|
||||
// linkage modifier on a typed var decl — the extern-named counterpart of
|
||||
// `<name> : <type> #foreign;` (see examples/1205). The optional
|
||||
// `extern [LIB] ["csym"]` tail mirrors the fn form; bare here (the sx name
|
||||
// IS the C symbol, resolved against the default-linked libSystem).
|
||||
#import "modules/std.sx";
|
||||
|
||||
__stdinp : *void extern;
|
||||
|
||||
main :: () -> i32 {
|
||||
addr_bits : u64 = xx @__stdinp;
|
||||
print("stdin extern global non-null: {}\n", addr_bits != 0);
|
||||
0
|
||||
}
|
||||
1
examples/expected/1225-ffi-extern-global.exit
Normal file
1
examples/expected/1225-ffi-extern-global.exit
Normal file
@@ -0,0 +1 @@
|
||||
0
|
||||
1
examples/expected/1225-ffi-extern-global.stderr
Normal file
1
examples/expected/1225-ffi-extern-global.stderr
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
examples/expected/1225-ffi-extern-global.stdout
Normal file
1
examples/expected/1225-ffi-extern-global.stdout
Normal file
@@ -0,0 +1 @@
|
||||
stdin extern global non-null: true
|
||||
Reference in New Issue
Block a user