diff --git a/src/Sema.zig b/src/Sema.zig index 14511fe82d..72256d6ae5 100644 --- a/src/Sema.zig +++ b/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 diff --git a/test/behavior/export.zig b/test/behavior/export.zig index 5f8ccf02d4..3943fd2834 100644 --- a/test/behavior/export.zig +++ b/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(); +}