]> git.lizzy.rs Git - rust.git/commitdiff
unerase regions in `infer_placeholder_type`
authorMatthew Jasper <mjjasper1@gmail.com>
Thu, 2 Apr 2020 19:31:51 +0000 (20:31 +0100)
committerMatthew Jasper <mjjasper1@gmail.com>
Thu, 2 Apr 2020 19:31:51 +0000 (20:31 +0100)
src/librustc_typeck/collect/type_of.rs
src/test/ui/suggestions/const-no-type.rs
src/test/ui/suggestions/const-no-type.stderr

index 1d34a58fabb3117e7401e571f7e6db89b496c773..e6099b98dc82bffab40cc89cb3088c70f5fd26d2 100644 (file)
@@ -655,7 +655,11 @@ fn infer_placeholder_type(
         }
     }
 
-    ty
+    // Typeck doesn't expect erased regions to be returned from `type_of`.
+    tcx.fold_regions(&ty, &mut false, |r, _| match r {
+        ty::ReErased => tcx.lifetimes.re_static,
+        _ => r,
+    })
 }
 
 fn report_assoc_ty_on_inherent_impl(tcx: TyCtxt<'_>, span: Span) {
index 6b79697e9839e1947c11e1a04e4f16285d4ff51e..b931a04c2860c9f7033203b68de717208ffca51f 100644 (file)
@@ -35,6 +35,11 @@ fn main() {}
 //~| HELP provide a type for the item
 //~| SUGGESTION C: i32
 
+const D = &&42;
+//~^ ERROR missing type for `const` item
+//~| HELP provide a type for the item
+//~| SUGGESTION D: &&i32
+
 static S = Vec::<String>::new();
 //~^ ERROR missing type for `static` item
 //~| HELP provide a type for the item
index a7b5aa5e5b124397475ba3e421d4942d8427c6b0..874c1bac10bd5613ba5024e88aec2a60383b9d0f 100644 (file)
@@ -4,14 +4,20 @@ error: missing type for `const` item
 LL | const C = 42;
    |       ^ help: provide a type for the item: `C: i32`
 
+error: missing type for `const` item
+  --> $DIR/const-no-type.rs:38:7
+   |
+LL | const D = &&42;
+   |       ^ help: provide a type for the item: `D: &&i32`
+
 error: missing type for `static` item
-  --> $DIR/const-no-type.rs:38:8
+  --> $DIR/const-no-type.rs:43:8
    |
 LL | static S = Vec::<String>::new();
    |        ^ help: provide a type for the item: `S: std::vec::Vec<std::string::String>`
 
 error: missing type for `static mut` item
-  --> $DIR/const-no-type.rs:43:12
+  --> $DIR/const-no-type.rs:48:12
    |
 LL | static mut SM = "abc";
    |            ^^ help: provide a type for the item: `SM: &str`
@@ -34,5 +40,5 @@ error: missing type for `static mut` item
 LL | static mut SM2 = "abc";
    |            ^^^ help: provide a type for the item: `SM2: <type>`
 
-error: aborting due to 6 previous errors
+error: aborting due to 7 previous errors