aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/behavior/translate_c_macros.h1
-rw-r--r--test/behavior/translate_c_macros.zig20
2 files changed, 21 insertions, 0 deletions
diff --git a/test/behavior/translate_c_macros.h b/test/behavior/translate_c_macros.h
index 490ca35726..547194d35a 100644
--- a/test/behavior/translate_c_macros.h
+++ b/test/behavior/translate_c_macros.h
@@ -37,5 +37,6 @@ union U {
#define IGNORE_ME_10(x) (volatile const void)(x)
#define UNION_CAST(X) (union U)(X)
+#define CAST_OR_CALL_WITH_PARENS(type_or_fn, val) ((type_or_fn)(val))
#define NESTED_COMMA_OPERATOR (1, (2, 3))
diff --git a/test/behavior/translate_c_macros.zig b/test/behavior/translate_c_macros.zig
index e44996b990..96676b5b78 100644
--- a/test/behavior/translate_c_macros.zig
+++ b/test/behavior/translate_c_macros.zig
@@ -70,6 +70,26 @@ test "casting to union with a macro" {
try expect(d == casted.d);
}
+test "casting or calling a value with a paren-surrounded macro" {
+ if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+
+ const l: c_long = 42;
+ const casted = h.CAST_OR_CALL_WITH_PARENS(c_int, l);
+ try expect(casted == @intCast(c_int, l));
+
+ const Helper = struct {
+ fn foo(n: c_int) !void {
+ try expect(n == 42);
+ }
+ };
+
+ try h.CAST_OR_CALL_WITH_PARENS(Helper.foo, 42);
+}
+
test "nested comma operator" {
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO