Sema: fix export with Internal linkage

The Export tables should only be populated with non-internal exports.
This commit is contained in:
Andrew Kelley 2022-04-24 20:07:39 -07:00
parent 76311aebff
commit ab658e32bd
2 changed files with 14 additions and 0 deletions

View file

@ -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

View file

@ -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();
}