diff --git a/examples/1176-diagnostics-foreign-removed.sx b/examples/1176-diagnostics-foreign-removed.sx new file mode 100644 index 0000000..d672c73 --- /dev/null +++ b/examples/1176-diagnostics-foreign-removed.sx @@ -0,0 +1,10 @@ +// Phase 8 (FFI-linkage) cutover: the prefix `#foreign` linkage directive has +// been removed. A declaration imports an external C symbol via the postfix +// `extern` keyword (or defines + exposes one via `export`). The parser rejects +// `#foreign` with a clear migration message instead of routing it onto `extern`. +// +// Expected: one error on the `#foreign` token; exit 1. + +abs_c :: (n: i32) -> i32 #foreign; + +main :: () -> i32 { 0 } diff --git a/examples/expected/1176-diagnostics-foreign-removed.exit b/examples/expected/1176-diagnostics-foreign-removed.exit new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/examples/expected/1176-diagnostics-foreign-removed.exit @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/examples/expected/1176-diagnostics-foreign-removed.stderr b/examples/expected/1176-diagnostics-foreign-removed.stderr new file mode 100644 index 0000000..051535c --- /dev/null +++ b/examples/expected/1176-diagnostics-foreign-removed.stderr @@ -0,0 +1,5 @@ +error: `#foreign` has been removed; use the postfix `extern` (import) / `export` (define) linkage keyword instead + --> examples/1176-diagnostics-foreign-removed.sx:8:26 + | + 8 | abs_c :: (n: i32) -> i32 #foreign; + | ^^^^^^^^ diff --git a/examples/expected/1176-diagnostics-foreign-removed.stdout b/examples/expected/1176-diagnostics-foreign-removed.stdout new file mode 100644 index 0000000..e69de29