aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlexandros Naskos <alex_naskos@hotmail.com>2020-04-27 18:07:18 +0300
committerAlexandros Naskos <alex_naskos@hotmail.com>2020-04-27 18:07:18 +0300
commit37fa418a94fc5da695f8799b6b021b632bb1d500 (patch)
treea5f84478194c56cd0541f9c8b914a00e08167cc7 /test
parent908b908481260322b60f479ccf4cabff72fcc5d5 (diff)
downloadzig-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.zig21
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)));
}
};