| author | |
| committer | |
| log | 75cecef63ccaffda32b7ec2dd2d6cc3cb0b3d23a |
| tree | 40154037ee31701ccfa3484b7dedefdc8139baea |
| parent | a0c44e806b70021203f5b9cf9af3b5049c40a75a |
3 files changed, 16 insertions(+), 16 deletions(-)
src/AstGen.zig+1-1| ... | @@ -6473,7 +6473,7 @@ fn ret(gz: *GenZir, scope: *Scope, node: Ast.Node.Index) InnerError!Zir.Inst.Ref | ... | @@ -6473,7 +6473,7 @@ fn ret(gz: *GenZir, scope: *Scope, node: Ast.Node.Index) InnerError!Zir.Inst.Ref |
| 6473 | .never => { | 6473 | .never => { |
| 6474 | // Returning a value that cannot be an error; skip error defers. | 6474 | // Returning a value that cannot be an error; skip error defers. |
| 6475 | try genDefers(gz, defer_outer, scope, .normal_only); | 6475 | try genDefers(gz, defer_outer, scope, .normal_only); |
| 6476 | _ = try gz.addUnNode(.ret_node, operand, node); | 6476 | try gz.addRet(rl, operand, node); |
| 6477 | return Zir.Inst.Ref.unreachable_value; | 6477 | return Zir.Inst.Ref.unreachable_value; |
| 6478 | }, | 6478 | }, |
| 6479 | .always => { | 6479 | .always => { |
test/behavior/struct.zig+15| ... | @@ -129,3 +129,18 @@ const MemberFnRand = struct { | ... | @@ -129,3 +129,18 @@ const MemberFnRand = struct { |
| 129 | return r.seed; | 129 | return r.seed; |
| 130 | } | 130 | } |
| 131 | }; | 131 | }; |
| 132 | |||
| 133 | test "return struct byval from function" { | ||
| 134 | const bar = makeBar2(1234, 5678); | ||
| 135 | try expect(bar.y == 5678); | ||
| 136 | } | ||
| 137 | const Bar = struct { | ||
| 138 | x: i32, | ||
| 139 | y: i32, | ||
| 140 | }; | ||
| 141 | fn makeBar2(x: i32, y: i32) Bar { | ||
| 142 | return Bar{ | ||
| 143 | .x = x, | ||
| 144 | .y = y, | ||
| 145 | }; | ||
| 146 | } |
test/behavior/struct_stage1.zig-15| ... | @@ -61,21 +61,6 @@ test "store member function in variable" { | ... | @@ -61,21 +61,6 @@ test "store member function in variable" { |
| 61 | try expect(result == 1234); | 61 | try expect(result == 1234); |
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | test "return struct byval from function" { | ||
| 65 | const bar = makeBar2(1234, 5678); | ||
| 66 | try expect(bar.y == 5678); | ||
| 67 | } | ||
| 68 | const Bar = struct { | ||
| 69 | x: i32, | ||
| 70 | y: i32, | ||
| 71 | }; | ||
| 72 | fn makeBar2(x: i32, y: i32) Bar { | ||
| 73 | return Bar{ | ||
| 74 | .x = x, | ||
| 75 | .y = y, | ||
| 76 | }; | ||
| 77 | } | ||
| 78 | |||
| 79 | test "empty struct method call" { | 64 | test "empty struct method call" { |
| 80 | const es = EmptyStruct{}; | 65 | const es = EmptyStruct{}; |
| 81 | try expect(es.method() == 1234); | 66 | try expect(es.method() == 1234); |