diff options
author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-12-14 10:31:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-14 10:31:08 +0100 |
commit | 01469693de40f8318766904278f3ad21f7a7db75 (patch) | |
tree | ea64e10aa39f70a47a7559f4c6cf9d45554ede28 /tests/rustdoc-js-std/parser-errors.js | |
parent | 939880ab7275a779e2a970caa4ca0fa1b7c25b37 (diff) | |
parent | 5573485354aa618e22564f0fc332378c4ef9373a (diff) | |
download | rust-01469693de40f8318766904278f3ad21f7a7db75.tar.gz |
Rollup merge of #105611 - BoxyUwU:more_granular_placeholderification, r=wesleywiser
fold instead of obliterating args
Fixes #105608
we call `const_eval_resolve` on the following constant:
```
def: playground::{impl#0}::and::{constant#0},
substs: [
ConstKind::Unevaluated {
def: playground::{impl#0}::and::{constant#0},
substs: [
ConstKind::Value(0x0),
_,
]
}
_,
],
```
when expanded out to `ConstKind::Expr` there are no infer vars so we attempt to evaluate it after replacing infer vars with garbage, however the current logic for replacing with garbage replaces _the whole arg containing the infer var_ rather than just the infer var. This means that after garbage replacement has occured we attempt to evaluate:
```
def: playground::{impl#0}::and::{constant#0},
substs: [
PLACEHOLDER,
PLACEHOLDER,
],
```
Which then leads to ctfe being unable to evaluate the const. With this PR we attempt to evaluate:
```
def: playground::{impl#0}::and::{constant#0},
substs: [
ConstKind::Unevaluated {
def: playground::{impl#0}::and::{constant#0},
substs: [
ConstKind::Value(0x0),
PLACEHOLDER,
]
}
PLACEHOLDER,
],
```
which ctfe _can_ handle.
I am not entirely sure why this function is supposed to replace params with placeholders rather than just inference vars :thinking:
Diffstat (limited to 'tests/rustdoc-js-std/parser-errors.js')
0 files changed, 0 insertions, 0 deletions