test(ffi-linkage): Phase 5.0 prereq — xfail lib-less extern/#foreign C-import visibility equivalence
Cross-module example (main → b → c) referencing c's lib-less C imports transitively. The non-transitive C-import gate (lower/decl.zig c_import_bare) must police the legacy `#foreign` form and the new `extern` keyword IDENTICALLY — same 'C function not visible' diagnostic, not the generic top-level-name wording. Today the extern twin escapes the c_import_bare gate (body is an empty block, not foreign_expr) and is only caught by the general isNameVisible gate, yielding the generic message. Expected snapshot pins the DESIRED equivalent wording; the next commit aligns the gate to green it. Prerequisite for migrating the fn-decl `#foreign` path onto `extern`. 443/444 corpus (1228 xfail), 444 unit.
This commit is contained in:
1
examples/expected/1228-ffi-extern-c-non-transitive.exit
Normal file
1
examples/expected/1228-ffi-extern-c-non-transitive.exit
Normal file
@@ -0,0 +1 @@
|
||||
1
|
||||
11
examples/expected/1228-ffi-extern-c-non-transitive.stderr
Normal file
11
examples/expected/1228-ffi-extern-c-non-transitive.stderr
Normal file
@@ -0,0 +1,11 @@
|
||||
error: C function 'c_foreign_abs' not visible; add #import for the module that declares it
|
||||
--> examples/1228-ffi-extern-c-non-transitive.sx:16:19
|
||||
|
|
||||
16 | print("{}\n", c_foreign_abs(-3));
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error: C function 'c_extern_abs' not visible; add #import for the module that declares it
|
||||
--> examples/1228-ffi-extern-c-non-transitive.sx:17:19
|
||||
|
|
||||
17 | print("{}\n", c_extern_abs(-4));
|
||||
| ^^^^^^^^^^^^
|
||||
Reference in New Issue
Block a user