diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-11-17 23:00:01 +0200 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-11-20 20:25:12 +0200 |
| commit | 98b3734b67739ad0e7d53500308495d53250cab0 (patch) | |
| tree | ebc912c09bec23cf429c52ecb7c170d21f0e76e8 /src | |
| parent | 9877a7d36c466a25fe722aa3ff301ee90b206d9c (diff) | |
| download | zig-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.zig | 7 |
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; |
