fix peer result location with typed parent, ...

...runtime condition, comptime prongs.

closes #3244
This commit is contained in:
Andrew Kelley 2019-09-17 22:30:49 -04:00
parent c6e77f248d
commit 914ad1ec2e
No known key found for this signature in database
GPG Key ID: 7C5F548F728501A9
2 changed files with 21 additions and 1 deletions

View File

@ -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) {

View File

@ -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);
}