diff options
| author | bors <bors@rust-lang.org> | 2022-07-20 10:34:42 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-07-20 10:34:42 +0000 |
| commit | d60d88fe5cd55496b9ccb1511a9af4994b7c43d0 (patch) | |
| tree | a82be3ddbee88adb2298ac8a700fa2beb3a52184 /src | |
| parent | 748cb1f01d623f2afd0d8b84fda7e2c8f7a11c7b (diff) | |
| parent | 4a742a691e7dd2522bad68b86fe2fd5a199d5561 (diff) | |
| download | rust-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')
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 |
