about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2022-07-20 10:34:42 +0000
committerbors <bors@rust-lang.org>2022-07-20 10:34:42 +0000
commitd60d88fe5cd55496b9ccb1511a9af4994b7c43d0 (patch)
treea82be3ddbee88adb2298ac8a700fa2beb3a52184 /src
parent748cb1f01d623f2afd0d8b84fda7e2c8f7a11c7b (diff)
parent4a742a691e7dd2522bad68b86fe2fd5a199d5561 (diff)
downloadrust-d60d88fe5cd55496b9ccb1511a9af4994b7c43d0.tar.gz
rust-d60d88fe5cd55496b9ccb1511a9af4994b7c43d0.zip
Auto merge of #99495 - oli-obk:revert_98582, r=oli-obk
Revert "Rollup merge of #98582 - oli-obk:unconstrained_opaque_type, r…

…=estebank"

This reverts commit 6f8fb911ad504b77549cf3256a09465621beab9d, reversing
changes made to 7210e46dc69a4b197a313d093fe145722c248b7d.

r? `@ghost`

rebase of https://github.com/rust-lang/rust/pull/99368
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug.rs3
-rw-r--r--src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug.stderr10
-rw-r--r--src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug_no_type.rs6
-rw-r--r--src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug_no_type.stderr10
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.rs10
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.stderr15
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-only-pattern-rpit.rs29
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-only-pattern.rs24
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-struct.rs11
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-upvar-enum.rs13
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-upvar.rs13
-rw-r--r--src/test/ui/type-alias-impl-trait/issue-96572-unconstrained.rs11
-rw-r--r--src/tools/clippy/clippy_utils/src/qualify_min_const_fn.rs1
13 files changed, 24 insertions, 132 deletions
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 9a50c0f988a..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,9 +1,8 @@
 // compile-flags: --edition=2021
-// check-pass
 #![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
new file mode 100644
index 00000000000..03b172e6de5
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug.stderr
@@ -0,0 +1,10 @@
+error: unconstrained opaque type
+  --> $DIR/cross_inference_pattern_bug.rs:5:14
+   |
+LL |     type T = impl Copy;
+   |              ^^^^^^^^^
+   |
+   = note: `T` must be used in combination with a concrete type within the same module
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug_no_type.rs b/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug_no_type.rs
index b929122a6c2..328096d44b4 100644
--- a/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug_no_type.rs
+++ b/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug_no_type.rs
@@ -1,13 +1,13 @@
+// known-bug: #96572
 // compile-flags: --edition=2021 --crate-type=lib
 // rustc-env:RUST_BACKTRACE=0
-// check-pass
 
 // tracked in https://github.com/rust-lang/rust/issues/96572
 
 #![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) = foo; // this line used to make the code fail
+    let (a, b) = foo; // removing this line makes the code compile
 }
diff --git a/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug_no_type.stderr b/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug_no_type.stderr
new file mode 100644
index 00000000000..8aa1f495639
--- /dev/null
+++ b/src/test/ui/type-alias-impl-trait/cross_inference_pattern_bug_no_type.stderr
@@ -0,0 +1,10 @@
+error: unconstrained opaque type
+  --> $DIR/cross_inference_pattern_bug_no_type.rs:10:14
+   |
+LL |     type T = impl Copy;  // error: unconstrained opaque type
+   |              ^^^^^^^^^
+   |
+   = note: `T` must be used in combination with a concrete type within the same module
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.rs b/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.rs
deleted file mode 100644
index 825710851b0..00000000000
--- a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-#![feature(type_alias_impl_trait)]
-
-fn main() {
-    type T = impl Copy;
-    let foo: T = Some((1u32, 2u32));
-    match foo {
-        None => (),
-        Some((a, b, c)) => (), //~ ERROR mismatched types
-    }
-}
diff --git a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.stderr b/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.stderr
deleted file mode 100644
index 728244a1844..00000000000
--- a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-mismatch.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error[E0308]: mismatched types
-  --> $DIR/issue-96572-unconstrained-mismatch.rs:8:14
-   |
-LL |     match foo {
-   |           --- this expression has type `T`
-LL |         None => (),
-LL |         Some((a, b, c)) => (),
-   |              ^^^^^^^^^ expected a tuple with 2 elements, found one with 3 elements
-   |
-   = note: expected tuple `(u32, u32)`
-              found tuple `(_, _, _)`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-only-pattern-rpit.rs b/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-only-pattern-rpit.rs
deleted file mode 100644
index c0a371eca1c..00000000000
--- a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-only-pattern-rpit.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-// check-pass
-
-#[allow(unconditional_recursion)]
-fn foo(b: bool) -> impl Copy {
-    let (mut x, mut y) = foo(false);
-    x = 42;
-    y = "foo";
-    if b {
-        panic!()
-    } else {
-        foo(true)
-    }
-}
-
-fn bar(b: bool) -> Option<impl Copy> {
-    if b {
-        return None;
-    }
-    match bar(!b) {
-        Some((mut x, mut y)) => {
-            x = 42;
-            y = "foo";
-        }
-        None => {}
-    }
-    None
-}
-
-fn main() {}
diff --git a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-only-pattern.rs b/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-only-pattern.rs
deleted file mode 100644
index ec249958590..00000000000
--- a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-only-pattern.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-#![feature(type_alias_impl_trait)]
-// check-pass
-
-type T = impl Copy;
-
-fn foo(foo: T) {
-    let (mut x, mut y) = foo;
-    x = 42;
-    y = "foo";
-}
-
-type U = impl Copy;
-
-fn bar(bar: Option<U>) {
-    match bar {
-        Some((mut x, mut y)) => {
-            x = 42;
-            y = "foo";
-        }
-        None => {}
-    }
-}
-
-fn main() {}
diff --git a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-struct.rs b/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-struct.rs
deleted file mode 100644
index 3351d9bcff1..00000000000
--- a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-struct.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-#![feature(type_alias_impl_trait)]
-// check-pass
-
-#[derive(Copy, Clone)]
-struct Foo((u32, u32));
-
-fn main() {
-    type U = impl Copy;
-    let foo: U = Foo((1u32, 2u32));
-    let Foo((a, b)) = foo;
-}
diff --git a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-upvar-enum.rs b/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-upvar-enum.rs
deleted file mode 100644
index ef3279a98d1..00000000000
--- a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-upvar-enum.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-#![feature(type_alias_impl_trait)]
-// check-pass
-
-fn main() {
-    type T = impl Copy;
-    let foo: T = Some((1u32, 2u32));
-    let x = move || {
-        match foo {
-            None => (),
-            Some((a, b)) => (),
-        }
-    };
-}
diff --git a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-upvar.rs b/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-upvar.rs
deleted file mode 100644
index bb0fc7c7534..00000000000
--- a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained-upvar.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-#![feature(type_alias_impl_trait)]
-// check-pass
-
-#[derive(Copy, Clone)]
-struct Foo((u32, u32));
-
-fn main() {
-    type T = impl Copy;
-    let foo: T = Foo((1u32, 2u32));
-    let x = move || {
-        let Foo((a, b)) = foo;
-    };
-}
diff --git a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained.rs b/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained.rs
deleted file mode 100644
index 4b9ed7f28eb..00000000000
--- a/src/test/ui/type-alias-impl-trait/issue-96572-unconstrained.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-#![feature(type_alias_impl_trait)]
-// check-pass
-
-fn main() {
-    type T = impl Copy;
-    let foo: T = Some((1u32, 2u32));
-    match foo {
-        None => (),
-        Some((a, b)) => (),
-    }
-}
diff --git a/src/tools/clippy/clippy_utils/src/qualify_min_const_fn.rs b/src/tools/clippy/clippy_utils/src/qualify_min_const_fn.rs
index 9690ad27771..3bf75bcbee8 100644
--- a/src/tools/clippy/clippy_utils/src/qualify_min_const_fn.rs
+++ b/src/tools/clippy/clippy_utils/src/qualify_min_const_fn.rs
@@ -252,7 +252,6 @@ fn check_place<'tcx>(tcx: TyCtxt<'tcx>, place: Place<'tcx>, span: Span, body: &B
                 }
             },
             ProjectionElem::ConstantIndex { .. }
-            | ProjectionElem::OpaqueCast(..)
             | ProjectionElem::Downcast(..)
             | ProjectionElem::Subslice { .. }
             | ProjectionElem::Deref