feat(C3.1): #foreign refs are validated — must name a #library or a named #import c unit

validateForeignRefs walks the merged tree (libraries + named c units,
nested namespaces included) and diagnoses any #foreign whose ref names
neither — a typo'd ref previously compiled and resolved silently
through whatever image carried the symbol. Decls synthesized from
#include headers carry no ref and are exempt. Flips the C0.2b pin;
zero collateral across the 608 other examples.
This commit is contained in:
agra
2026-06-12 17:09:07 +03:00
parent 0bd8f3e5ce
commit 1bad29e72e
6 changed files with 70 additions and 9 deletions

View File

@@ -1 +1,5 @@
error: #foreign library 'nosuchunit' is not declared; expected a #library constant or a named '#import c' unit
--> examples/1620-cimport-foreign-ref-unvalidated.sx:12:1
|
12 | ref_answer :: () -> i32 #foreign nosuchunit "ref_answer";
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^