about summary refs log tree commit diff
diff options
context:
space:
mode:
authorlcnr <rust@lcnr.de>2022-05-20 14:46:18 +0200
committerlcnr <rust@lcnr.de>2022-05-21 08:13:17 +0200
commitdb11c1939cfca105116a5cdf13f63e5005471aad (patch)
treefcae9fbaee07deb6c41809b591f6e236b84d133c
parent39a03779f8412c776cebaca7173369dbc0025d50 (diff)
downloadrust-db11c1939cfca105116a5cdf13f63e5005471aad.tar.gz
rust-db11c1939cfca105116a5cdf13f63e5005471aad.zip
update mir user type printing and apparently fix an ICE
-rw-r--r--compiler/rustc_middle/src/mir/pretty.rs5
-rw-r--r--src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug.rs20
-rw-r--r--src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug.stderr34
3 files changed, 11 insertions, 48 deletions
diff --git a/compiler/rustc_middle/src/mir/pretty.rs b/compiler/rustc_middle/src/mir/pretty.rs
index 8111409b8bc..eaa68bf1b38 100644
--- a/compiler/rustc_middle/src/mir/pretty.rs
+++ b/compiler/rustc_middle/src/mir/pretty.rs
@@ -1007,10 +1007,11 @@ fn write_user_type_annotations(
     for (index, annotation) in body.user_type_annotations.iter_enumerated() {
         writeln!(
             w,
-            "| {:?}: {:?} at {}",
+            "| {:?}: user_ty: {:?}, span: {}, inferred_ty: {:?}",
             index.index(),
             annotation.user_ty,
-            tcx.sess.source_map().span_to_embeddable_string(annotation.span)
+            tcx.sess.source_map().span_to_embeddable_string(annotation.span),
+            annotation.inferred_ty,
         )?;
     }
     if !body.user_type_annotations.is_empty() {
diff --git a/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug.rs b/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug.rs
index 9ad7cad39d0..811832848d9 100644
--- a/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug.rs
+++ b/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug.rs
@@ -1,24 +1,8 @@
-// known-bug
-// failure-status: 101
-// compile-flags: --edition=2021 --crate-type=lib
-// rustc-env:RUST_BACKTRACE=0
-
-// normalize-stderr-test "thread 'rustc' panicked.*" -> "thread 'rustc' panicked"
-// normalize-stderr-test "note:.*RUST_BACKTRACE=1.*\n" -> ""
-// normalize-stderr-test "\nerror: internal compiler error.*\n\n" -> ""
-// normalize-stderr-test "note:.*unexpectedly panicked.*\n\n" -> ""
-// normalize-stderr-test "note: we would appreciate a bug report.*\n\n" -> ""
-// normalize-stderr-test "note: compiler flags.*\n\n" -> ""
-// normalize-stderr-test "note: rustc.*running on.*\n\n" -> ""
-// normalize-stderr-test "#.*\n" -> ""
-// normalize-stderr-test ".*delayed.*\n" -> ""
-
-// tracked in https://github.com/rust-lang/rust/issues/96572
-
+// compile-flags: --edition=2021
 #![feature(type_alias_impl_trait)]
 
 fn main() {
-    type T = impl Copy;
+    type T = impl Copy; //~ ERROR unconstrained opaque type
     let foo: T = (1u32, 2u32);
     let (a, b): (u32, u32) = foo;
 }
diff --git a/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug.stderr b/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug.stderr
index 84d2705bf24..03b172e6de5 100644
--- a/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug.stderr
+++ b/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug.stderr
@@ -1,32 +1,10 @@
-error: internal compiler error: no errors encountered even though `delay_span_bug` issued
-
-error: internal compiler error: broken MIR in DefId(0:3 ~ cross_inference_pattern_bug[646d]::main) ((_1.0: u32)): can't project out of PlaceTy { ty: main::T, variant_index: None }
-  --> $DIR/cross_inference_pattern_bug.rs:23:10
-   |
-LL |     let (a, b): (u32, u32) = foo;
-   |          ^
-   |
-
-error: internal compiler error: TyKind::Error constructed but no error reported
-   |
-
-error: internal compiler error: TyKind::Error constructed but no error reported
+error: unconstrained opaque type
+  --> $DIR/cross_inference_pattern_bug.rs:5:14
    |
-
-error: internal compiler error: broken MIR in DefId(0:3 ~ cross_inference_pattern_bug[646d]::main) ((_1.1: u32)): can't project out of PlaceTy { ty: main::T, variant_index: None }
-  --> $DIR/cross_inference_pattern_bug.rs:23:13
-   |
-LL |     let (a, b): (u32, u32) = foo;
-   |             ^
-   |
-
-error: internal compiler error: TyKind::Error constructed but no error reported
-   |
-
-error: internal compiler error: TyKind::Error constructed but no error reported
+LL |     type T = impl Copy;
+   |              ^^^^^^^^^
    |
+   = note: `T` must be used in combination with a concrete type within the same module
 
-thread 'rustc' panicked
+error: aborting due to previous error
 
-query stack during panic:
-end of query stack