fix exported variable not respecting linkage

This commit is contained in:
Andrew Kelley 2020-02-27 11:51:43 -05:00
parent 2696c8b42d
commit c39d7a6326
No known key found for this signature in database
GPG Key ID: 7C5F548F728501A9
5 changed files with 47 additions and 0 deletions

View File

@ -17841,6 +17841,7 @@ static IrInstGen *ir_analyze_instruction_export(IrAnalyze *ira, IrInstSrcExport
}
} break;
case ZigTypeIdInt:
want_var_export = true;
break;
case ZigTypeIdVoid:
case ZigTypeIdBool:

View File

@ -0,0 +1,23 @@
const Builder = @import("std").build.Builder;
pub fn build(b: *Builder) void {
const mode = b.standardReleaseOptions();
const target = b.standardTargetOptions(null);
const obj1 = b.addStaticLibrary("obj1", "obj1.zig");
obj1.setBuildMode(mode);
obj1.setTheTarget(target);
const obj2 = b.addStaticLibrary("obj2", "obj2.zig");
obj2.setBuildMode(mode);
obj2.setTheTarget(target);
const main = b.addTest("main.zig");
main.setBuildMode(mode);
main.setTheTarget(target);
main.linkLibrary(obj1);
main.linkLibrary(obj2);
const test_step = b.step("test", "Test it");
test_step.dependOn(&main.step);
}

View File

@ -0,0 +1,9 @@
const std = @import("std");
extern var obj1_integer: usize;
extern var obj2_integer: usize;
test "access the external integers" {
std.testing.expect(obj1_integer == 421);
std.testing.expect(obj2_integer == 422);
}

View File

@ -0,0 +1,7 @@
extern var internal_integer: usize = 1;
extern var obj1_integer: usize = 421;
comptime {
@export(internal_integer, .{ .name = "internal_integer", .linkage = .Internal });
@export(obj1_integer, .{ .name = "obj1_integer", .linkage = .Strong });
}

View File

@ -0,0 +1,7 @@
extern var internal_integer: usize = 2;
extern var obj2_integer: usize = 422;
comptime {
@export(internal_integer, .{ .name = "internal_integer", .linkage = .Internal });
@export(obj2_integer, .{ .name = "obj2_integer", .linkage = .Strong });
}