// `#import` is non-transitive for C-import functions: main imports b, // b imports c, so main must NOT see c's lib-less `#foreign` / `extern` // C functions directly. Referencing either is rejected by the // C-import visibility gate (lower/decl.zig `c_import_bare`). // // Equivalence lock (FFI-linkage Part B): the legacy `#foreign` form and // the new `extern` keyword are two spellings of the same lib-less // C-symbol import, so they must produce the SAME "C function not // visible" diagnostic — not the generic top-level-name wording. This // pins that equivalence as a prerequisite for migrating the fn-decl // `#foreign` path onto `extern`. #import "modules/std.sx"; #import "1228-ffi-extern-c-non-transitive/b.sx"; main :: () -> i32 { print("{}\n", c_foreign_abs(-3)); print("{}\n", c_extern_abs(-4)); return 0; }