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_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).
|
extern. 1224 green (`c_abs`→`abs`); 1223 unregressed. Suite green (635/443).
|
||||||
`green` commit. extern_lib parsed+stored (lib linking stays the `#library` axis).
|
`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
|
## Known issues
|
||||||
- **Workflow hazard (1.2):** an editor format-on-save (or `zig fmt`) clobbered the
|
- **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