Add examples/1224-ffi-extern-fn-rename.sx — 'c_abs :: (n) -> i32 extern "abs";' binds C's abs via the optional symbol-name override. Hand-authored expected captures the success output (c_abs(-42) = 42). RED: 1224 is the sole corpus failure (635 ran, 1 failed) — parse error, the '"abs"' string after 'extern' is not yet accepted. Phase 1.2b parses the optional [LIB] ["csym"] tail and consumes the rename. xfail commit per the cadence rule.
14 lines
460 B
Plaintext
14 lines
460 B
Plaintext
// extern with a "csym" rename (FFI-linkage stream, Phase 1.2): the sx name
|
|
// `c_abs` binds C's `abs` via the optional symbol-name override after the
|
|
// `extern` keyword — mirrors `#foreign "abs"`. The optional `LIB` ident slot
|
|
// (extern_lib) sits before the string; here it's omitted (libc is
|
|
// default-linked).
|
|
#import "modules/std.sx";
|
|
|
|
c_abs :: (n: i32) -> i32 extern "abs";
|
|
|
|
main :: () -> i32 {
|
|
print("c_abs(-42) = {}\n", c_abs(xx -42));
|
|
0
|
|
}
|