diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/behavior/call.zig | 21 | ||||
| -rw-r--r-- | test/cases/compile_errors/invalid_field_in_struct_value_expression.zig | 9 |
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 |
