aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/behavior/call.zig21
-rw-r--r--test/cases/compile_errors/invalid_field_in_struct_value_expression.zig9
2 files changed, 30 insertions, 0 deletions
diff --git a/test/behavior/call.zig b/test/behavior/call.zig
index a476ba1788..b579f85213 100644
--- a/test/behavior/call.zig
+++ b/test/behavior/call.zig
@@ -499,3 +499,24 @@ test "call inline fn through pointer" {
const f = &S.foo;
try f(123);
}
+
+test "call coerced function" {
+ const T = struct {
+ x: f64,
+ const T = @This();
+ usingnamespace Implement(1);
+ const F = fn (comptime f64) type;
+ const Implement: F = opaque {
+ fn implementer(comptime val: anytype) type {
+ return opaque {
+ fn incr(self: T) T {
+ return .{ .x = self.x + val };
+ }
+ };
+ }
+ }.implementer;
+ };
+
+ const a = T{ .x = 3 };
+ try std.testing.expect(a.incr().x == 4);
+}
diff --git a/test/cases/compile_errors/invalid_field_in_struct_value_expression.zig b/test/cases/compile_errors/invalid_field_in_struct_value_expression.zig
index f1cd96d8e7..251559824e 100644
--- a/test/cases/compile_errors/invalid_field_in_struct_value_expression.zig
+++ b/test/cases/compile_errors/invalid_field_in_struct_value_expression.zig
@@ -21,6 +21,13 @@ pub export fn entry() void {
dump(.{ .field_1 = 123, .field_3 = 456 });
}
+pub export fn entry1() void {
+ const x = Object{
+ .abc = 1,
+ };
+ _ = x;
+}
+
// error
// backend=stage2
// target=native
@@ -29,3 +36,5 @@ pub export fn entry() void {
// :1:11: note: struct declared here
// :21:30: error: no field named 'field_3' in struct 'tmp.Object'
// :15:16: note: struct declared here
+// :26:10: error: no field named 'abc' in struct 'tmp.Object'
+// :15:16: note: struct declared here