Commit ab658e32bd

Andrew Kelley <andrew@ziglang.org>
2022-04-25 05:07:39
Sema: fix export with Internal linkage
The Export tables should only be populated with non-internal exports.
1 parent 76311ae
Changed files (2)
src
test
behavior
src/Sema.zig
@@ -4321,6 +4321,10 @@ pub fn analyzeExport(
     const Export = Module.Export;
     const mod = sema.mod;
 
+    if (borrowed_options.linkage == .Internal) {
+        return;
+    }
+
     try mod.ensureDeclAnalyzed(exported_decl_index);
     const exported_decl = mod.declPtr(exported_decl_index);
     // TODO run the same checks as we do for C ABI struct fields
test/behavior/export.zig
@@ -45,3 +45,13 @@ test "exporting enum type and value" {
     };
     try expect(S.e == .two);
 }
+
+test "exporting with internal linkage" {
+    const S = struct {
+        fn foo() callconv(.C) void {}
+        comptime {
+            @export(foo, .{ .name = "exporting_with_internal_linkage_foo", .linkage = .Internal });
+        }
+    };
+    S.foo();
+}