aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-11-17 23:00:01 +0200
committerVeikka Tuominen <git@vexu.eu>2022-11-20 20:25:12 +0200
commit98b3734b67739ad0e7d53500308495d53250cab0 (patch)
treeebc912c09bec23cf429c52ecb7c170d21f0e76e8 /src
parent9877a7d36c466a25fe722aa3ff301ee90b206d9c (diff)
downloadzig-98b3734b67739ad0e7d53500308495d53250cab0.tar.gz
zig-98b3734b67739ad0e7d53500308495d53250cab0.zip
Sema: prioritize Value.variable over OPV when resolving const value
Closes #12275
Diffstat (limited to 'src')
-rw-r--r--src/Sema.zig7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index c465d5f81d..d1de0af362 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -1897,10 +1897,15 @@ fn resolveMaybeUndefValAllowVariablesMaybeRuntime(
}
i -= Air.Inst.Ref.typed_value_map.len;
+ const air_tags = sema.air_instructions.items(.tag);
if (try sema.typeHasOnePossibleValue(sema.typeOf(inst))) |opv| {
+ if (air_tags[i] == .constant) {
+ const ty_pl = sema.air_instructions.items(.data)[i].ty_pl;
+ const val = sema.air_values.items[ty_pl.payload];
+ if (val.tag() == .variable) return val;
+ }
return opv;
}
- const air_tags = sema.air_instructions.items(.tag);
switch (air_tags[i]) {
.constant => {
const ty_pl = sema.air_instructions.items(.data)[i].ty_pl;