zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 914ad1ec2eff4ea9061804ad0da9cde7dd6543b6 (tree)
parent c6e77f248d3771070162d80341f9aeef89a49924
Author: Andrew Kelley <andrew@ziglang.org>
Date:   Tue, 17 Sep 2019 22:30:49 -0400

fix peer result location with typed parent, ...

...runtime condition, comptime prongs.

closes #3244

Diffstat:
Msrc/ir.cpp | 2+-
Mtest/stage1/behavior/misc.zig | 20++++++++++++++++++++
2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/src/ir.cpp b/src/ir.cpp @@ -15198,7 +15198,7 @@ static IrInstruction *ir_resolve_result_raw(IrAnalyze *ira, IrInstruction *suspe } peer_parent->skipped = true; return ir_resolve_result(ira, suspend_source_instr, peer_parent->parent, - value_type, value, force_runtime, true, true); + value_type, value, force_runtime || !is_comptime, true, true); } if (peer_parent->resolved_type == nullptr) { diff --git a/test/stage1/behavior/misc.zig b/test/stage1/behavior/misc.zig @@ -721,3 +721,23 @@ test "global variable assignment with optional unwrapping with var initialized t }; expect(global_foo.* == 1234); } + +test "peer result location with typed parent, runtime condition, comptime prongs" { + const S = struct { + fn doTheTest(arg: i32) i32 { + const st = Structy{ + .bleh = if (arg == 1) 1 else 1, + }; + + if (st.bleh == 1) + return 1234; + return 0; + } + + const Structy = struct { + bleh: i32, + }; + }; + expect(S.doTheTest(0) == 1234); + expect(S.doTheTest(1) == 1234); +}