about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorTyler Mandry <tmandry@gmail.com>2020-06-10 17:08:22 -0700
committerTyler Mandry <tmandry@gmail.com>2020-06-10 18:09:34 -0700
commitd794313c41609e01c661cf29122a620ad583af9d (patch)
tree92bd035362728ee18fca6c2558c20a54670a1465 /src
parent3d5d0f898c2f3998e50c2180c6202f193c3acdbc (diff)
downloadrust-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.rs11
-rw-r--r--src/test/ui/async-await/issue-73050.rs12
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() {}