refactor(ffi-linkage): Phase 9.1d — eliminate the foreign_expr AST node
The last linkage-family 'foreign' carrier. Migrated c_import.zig auto-synthesis
(#import c {#include}) to build the extern shape (empty-block body + extern_export
= .extern_) instead of a foreign_expr body — the Phase 5.0 fn-body flip applied to
auto-synth. With nothing left building it, deleted the foreign_expr union variant +
ForeignExpr struct (ast.zig) and every reader: the dead-arm switch cases (sema,
resolver, generic, call, semantic_diagnostics, lsp), the coalescing reads in
decl.zig (is_foreign local, cc/rename/dedup/variadic/visibility gates) + pack.zig,
and checkForeignRefs (now reads extern_lib only). 9.1 LINKAGE PURGE COMPLETE — all
that remains in src/ is the runtime-class family (9.2) + comments. Snapshot-neutral
(the #import c examples 1215/1216/1217 + sqlite 1624 exercise the synth path); suite
green (646 corpus / 444 unit, 0 failed).
This commit is contained in:
@@ -82,7 +82,6 @@ pub const Node = struct {
|
||||
inferred_type: void,
|
||||
builtin_expr: void,
|
||||
compiler_expr: void,
|
||||
foreign_expr: ForeignExpr,
|
||||
library_decl: LibraryDecl,
|
||||
framework_decl: FrameworkDecl,
|
||||
function_type_expr: FunctionTypeExpr,
|
||||
@@ -743,11 +742,6 @@ pub const NamespaceDecl = struct {
|
||||
is_raw: bool = false,
|
||||
};
|
||||
|
||||
pub const ForeignExpr = struct {
|
||||
library_ref: ?[]const u8 = null, // identifier name of library constant
|
||||
c_name: ?[]const u8 = null, // C symbol name override
|
||||
};
|
||||
|
||||
pub const LibraryDecl = struct {
|
||||
lib_name: []const u8,
|
||||
name: []const u8, // sx-side constant name
|
||||
|
||||
Reference in New Issue
Block a user