diff options
| author | Tyler Mandry <tmandry@gmail.com> | 2020-06-10 17:08:22 -0700 |
|---|---|---|
| committer | Tyler Mandry <tmandry@gmail.com> | 2020-06-10 18:09:34 -0700 |
| commit | d794313c41609e01c661cf29122a620ad583af9d (patch) | |
| tree | 92bd035362728ee18fca6c2558c20a54670a1465 /src | |
| parent | 3d5d0f898c2f3998e50c2180c6202f193c3acdbc (diff) | |
| download | rust-d794313c41609e01c661cf29122a620ad583af9d.tar.gz rust-d794313c41609e01c661cf29122a620ad583af9d.zip | |
Allow inference regions when relating consts
Fixes #73050
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_middle/ty/relate.rs | 11 | ||||
| -rw-r--r-- | src/test/ui/async-await/issue-73050.rs | 12 |
2 files changed, 13 insertions, 10 deletions
diff --git a/src/librustc_middle/ty/relate.rs b/src/librustc_middle/ty/relate.rs index d507fcbc194..aeb3a0716fb 100644 --- a/src/librustc_middle/ty/relate.rs +++ b/src/librustc_middle/ty/relate.rs @@ -508,16 +508,7 @@ pub fn super_relate_consts<R: TypeRelation<'tcx>>( debug!("{}.super_relate_consts(a = {:?}, b = {:?})", relation.tag(), a, b); let tcx = relation.tcx(); - let eagerly_eval = |x: &'tcx ty::Const<'tcx>| { - // FIXME(eddyb) this doesn't account for lifetime inference variables - // being erased by `eval`, *nor* for the polymorphic aspect of `eval`. - // That is, we could always use `eval` and it will just return the - // old value back if it doesn't succeed. - if !x.val.needs_infer() { - return x.eval(tcx, relation.param_env()).val; - } - x.val - }; + let eagerly_eval = |x: &'tcx ty::Const<'tcx>| x.eval(tcx, relation.param_env()).val; // FIXME(eddyb) doesn't look like everything below checks that `a.ty == b.ty`. // We could probably always assert it early, as `const` generic parameters diff --git a/src/test/ui/async-await/issue-73050.rs b/src/test/ui/async-await/issue-73050.rs new file mode 100644 index 00000000000..790f24a230b --- /dev/null +++ b/src/test/ui/async-await/issue-73050.rs @@ -0,0 +1,12 @@ +// check-pass +// edition:2018 + +#[allow(unused)] +async fn foo<'a>() { + let _data = &mut [0u8; { 1 + 4 }]; + bar().await +} + +async fn bar() {} + +fn main() {} |
