behavior: fix redefined exports

This commit is contained in:
Jacob Young 2022-10-06 06:33:21 -04:00
parent e875530f8f
commit 45c667eb21
4 changed files with 11 additions and 23 deletions

View File

@ -211,13 +211,7 @@ test {
_ = @import("behavior/export.zig"); _ = @import("behavior/export.zig");
} }
if (builtin.zig_backend != .stage2_arm and if (builtin.zig_backend != .stage2_wasm) {
builtin.zig_backend != .stage2_x86_64 and
builtin.zig_backend != .stage2_aarch64 and
builtin.zig_backend != .stage2_wasm and
builtin.zig_backend != .stage2_c and
builtin.zig_backend != .stage1)
{
_ = @import("behavior/export_self_referential_type_info.zig"); _ = @import("behavior/export_self_referential_type_info.zig");
} }
} }

View File

@ -1 +1 @@
export const foo: c_int = @boolToInt(@typeInfo(@This()).Struct.is_tuple); export const self_referential_type_info: c_int = @boolToInt(@typeInfo(@This()).Struct.is_tuple);

View File

@ -361,13 +361,14 @@ test "nested generic function" {
test "extern function used as generic parameter" { test "extern function used as generic parameter" {
const S = struct { const S = struct {
extern fn foo() void; extern fn usedAsGenericParameterFoo() void;
extern fn bar() void; extern fn usedAsGenericParameterBar() void;
inline fn baz(comptime _: anytype) type { inline fn usedAsGenericParameterBaz(comptime _: anytype) type {
return struct {}; return struct {};
} }
}; };
try expect(S.baz(S.foo) != S.baz(S.bar)); try expect(S.usedAsGenericParameterBaz(S.usedAsGenericParameterFoo) !=
S.usedAsGenericParameterBaz(S.usedAsGenericParameterBar));
} }
test "generic struct as parameter type" { test "generic struct as parameter type" {

View File

@ -355,19 +355,12 @@ fn testOpaque() !void {
} }
test "type info: function type info" { test "type info: function type info" {
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
// wasm doesn't support align attributes on functions
if (builtin.target.cpu.arch == .wasm32 or builtin.target.cpu.arch == .wasm64) return error.SkipZigTest;
try testFunction(); try testFunction();
comptime try testFunction(); comptime try testFunction();
} }
fn testFunction() !void { fn testFunction() !void {
const fn_info = @typeInfo(@TypeOf(foo)); const fn_info = @typeInfo(@TypeOf(typeInfoFoo));
try expect(fn_info == .Fn); try expect(fn_info == .Fn);
try expect(fn_info.Fn.alignment > 0); try expect(fn_info.Fn.alignment > 0);
try expect(fn_info.Fn.calling_convention == .C); try expect(fn_info.Fn.calling_convention == .C);
@ -375,12 +368,12 @@ fn testFunction() !void {
try expect(fn_info.Fn.args.len == 2); try expect(fn_info.Fn.args.len == 2);
try expect(fn_info.Fn.is_var_args); try expect(fn_info.Fn.is_var_args);
try expect(fn_info.Fn.return_type.? == usize); try expect(fn_info.Fn.return_type.? == usize);
const fn_aligned_info = @typeInfo(@TypeOf(fooAligned)); const fn_aligned_info = @typeInfo(@TypeOf(typeInfoFooAligned));
try expect(fn_aligned_info.Fn.alignment == 4); try expect(fn_aligned_info.Fn.alignment == 4);
} }
extern fn foo(a: usize, b: bool, ...) callconv(.C) usize; extern fn typeInfoFoo(a: usize, b: bool, ...) callconv(.C) usize;
extern fn fooAligned(a: usize, b: bool, ...) align(4) callconv(.C) usize; extern fn typeInfoFooAligned(a: usize, b: bool, ...) align(4) callconv(.C) usize;
test "type info: generic function types" { test "type info: generic function types" {
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;