From b78e7ddeb128021cf2f3d723ccdf2d00d21e0458 Mon Sep 17 00:00:00 2001 From: agra Date: Mon, 15 Jun 2026 08:42:59 +0300 Subject: [PATCH] =?UTF-8?q?refactor(ffi-linkage):=20Phase=209.1b=20?= =?UTF-8?q?=E2=80=94=20rename=20'foreign=20symbol'=20diagnostic=20+=20pani?= =?UTF-8?q?c=20to=20'extern'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The dup-C-symbol diagnostic (decl.zig) and the resolveFuncByName panic (call.zig) now say 'extern symbol' instead of 'foreign symbol' — the keyword-neutral internal wording catches up to the extern-only surface. Intentional snapshot regen of 1172 (the only assertion of this message). Suite green (646/444). --- .../expected/1172-diagnostics-foreign-symbol-conflict.stderr | 2 +- src/ir/lower/call.zig | 2 +- src/ir/lower/decl.zig | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/expected/1172-diagnostics-foreign-symbol-conflict.stderr b/examples/expected/1172-diagnostics-foreign-symbol-conflict.stderr index f5bbbfe..5d408fc 100644 --- a/examples/expected/1172-diagnostics-foreign-symbol-conflict.stderr +++ b/examples/expected/1172-diagnostics-foreign-symbol-conflict.stderr @@ -1,4 +1,4 @@ -error: foreign symbol 'getenv' is already bound with a different signature; two views of one C symbol must declare identical types +error: extern symbol 'getenv' is already bound with a different signature; two views of one C symbol must declare identical types --> examples/1172-diagnostics-foreign-symbol-conflict.sx:9:61 | 9 | getenv_opt :: (name: [:0]u8) -> ?[:0]u8 extern libc "getenv"; diff --git a/src/ir/lower/call.zig b/src/ir/lower/call.zig index ed2135b..2a6e1f0 100644 --- a/src/ir/lower/call.zig +++ b/src/ir/lower/call.zig @@ -1256,7 +1256,7 @@ pub fn allocViaContext(self: *Lowering, size_ref: Ref, void_ptr_ty: TypeId) Ref /// heap path and the closure env-copy path, both of which need /// libc `memcpy` after the `#builtin` form was dropped. pub fn callExtern(self: *Lowering, name: []const u8, args: []const Ref, ret_ty: TypeId) Ref { - const fid = self.resolveFuncByName(name) orelse @panic("foreign symbol missing — std.sx not imported?"); + const fid = self.resolveFuncByName(name) orelse @panic("extern symbol missing — std.sx not imported?"); return self.builder.call(fid, args, ret_ty); } diff --git a/src/ir/lower/decl.zig b/src/ir/lower/decl.zig index 1527988..7ee8327 100644 --- a/src/ir/lower/decl.zig +++ b/src/ir/lower/decl.zig @@ -2052,7 +2052,7 @@ pub fn dedupeExternSymbol(self: *Lowering, fd: *const ast.FnDecl, sym_name: Stri return true; } if (self.diagnostics) |d| { - d.addFmt(.err, fd.body.span, "foreign symbol '{s}' is already bound with a different signature; two views of one C symbol must declare identical types", .{self.module.types.getString(sym_name)}); + d.addFmt(.err, fd.body.span, "extern symbol '{s}' is already bound with a different signature; two views of one C symbol must declare identical types", .{self.module.types.getString(sym_name)}); } return true; }