Commit 914ad1ec2e
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) {
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);
+}