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:
@@ -80,6 +80,9 @@ historical carve-out — keep `issues/*.md` provenance, gate the live tree only.
|
||||
extern_name → declare under C name, map sx→C) and extends the dedupe guard to
|
||||
extern. 1224 green (`c_abs`→`abs`); 1223 unregressed. Suite green (635/443).
|
||||
`green` commit. extern_lib parsed+stored (lib linking stays the `#library` axis).
|
||||
- (1.2c) Added `examples/1225-ffi-extern-global.sx` (`__stdinp : *void extern;`,
|
||||
mirrors `#foreign` global 1205) + success snapshot. RED (636 ran, 1 failed — parse
|
||||
error: var-decl `extern` not accepted). `xfail`; 1.2d greens it.
|
||||
|
||||
## Known issues
|
||||
- **Workflow hazard (1.2):** an editor format-on-save (or `zig fmt`) clobbered the
|
||||
|
||||
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