An `extern LIB "csym"` ref must name a declared #library / #import c unit, like its `#foreign LIB` twin (example 1620). Today checkForeignRefs reads only foreign_expr.library_ref and skips the extern keyword's extern_lib, so a bogus `extern nosuchunit "abs"` compiles silently (the symbol resolves via the default image and runs). Expected pins the DESIRED compile-time diagnostic; the next commit extends checkForeignRefs to green it. Fourth extern/#foreign divergence and a prerequisite for the fn-decl migration. 647 corpus (1231 xfail), 444 unit.
6 lines
278 B
Plaintext
6 lines
278 B
Plaintext
error: extern library 'nosuchunit' is not declared; expected a #library constant or a named '#import c' unit
|
|
--> examples/1231-ffi-extern-undeclared-lib.sx:14:1
|
|
|
|
|
14 | c_abs :: (n: i32) -> i32 extern nosuchunit "abs";
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|