diff options
| author | Alexandros Naskos <alex_naskos@hotmail.com> | 2020-04-27 18:07:18 +0300 |
|---|---|---|
| committer | Alexandros Naskos <alex_naskos@hotmail.com> | 2020-04-27 18:07:18 +0300 |
| commit | 37fa418a94fc5da695f8799b6b021b632bb1d500 (patch) | |
| tree | a5f84478194c56cd0541f9c8b914a00e08167cc7 /test | |
| parent | 908b908481260322b60f479ccf4cabff72fcc5d5 (diff) | |
| download | zig-37fa418a94fc5da695f8799b6b021b632bb1d500.tar.gz zig-37fa418a94fc5da695f8799b6b021b632bb1d500.zip | |
Cleaned up code, added a testcase for an extern member function call
Diffstat (limited to 'test')
| -rw-r--r-- | test/stage1/behavior/bugs/4328.zig | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/test/stage1/behavior/bugs/4328.zig b/test/stage1/behavior/bugs/4328.zig index 631c213df1..bbad666c41 100644 --- a/test/stage1/behavior/bugs/4328.zig +++ b/test/stage1/behavior/bugs/4328.zig @@ -1,18 +1,31 @@ const expectEqual = @import("std").testing.expectEqual; -const FILE = extern struct { dummy_field: u8, }; +const FILE = extern struct { + dummy_field: u8, +}; extern fn printf([*c]const u8, ...) c_int; extern fn fputs([*c]const u8, noalias [*c]FILE) c_int; extern fn ftell([*c]FILE) c_long; -test "Extern function call in @TypeOf" { +const S = extern struct { + state: c_short, + + extern fn s_do_thing([*c]S, b: c_int) c_short; +}; + +test "Extern function calls in @TypeOf" { const Test = struct { - fn test_fn(a: var, b: var) @TypeOf(printf("%d %s\n", a, b)) { + fn test_fn_1(a: var, b: var) @TypeOf(printf("%d %s\n", a, b)) { return 0; } + fn test_fn_2(a: var) @TypeOf((S{ .state = 0 }).s_do_thing(a)) { + return 1; + } + fn doTheTest() void { - expectEqual(c_int, @TypeOf(test_fn(0, 42))); + expectEqual(c_int, @TypeOf(test_fn_1(0, 42))); + expectEqual(c_short, @TypeOf(test_fn_2(0))); } }; |
