diff options
| author | Matthias Krüger <476013+matthiaskrgr@users.noreply.github.com> | 2025-05-03 08:45:04 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-03 08:45:04 +0200 |
| commit | 5f9330c0b5ec0447dd0b4e2b71e59b33d013decd (patch) | |
| tree | 1be9023d581c5bca89edec61b23951fad8cd6fff | |
| parent | 422dfe677236ae0dbccf824b466b3b2e2867e5a6 (diff) | |
| parent | dcee18b3b8cd23e6cd3ed20805d97515526852f7 (diff) | |
| download | rust-5f9330c0b5ec0447dd0b4e2b71e59b33d013decd.tar.gz rust-5f9330c0b5ec0447dd0b4e2b71e59b33d013decd.zip | |
Rollup merge of #140568 - moxian:reg-140545, r=compiler-errors
Add regression test for #140545 Closes #140545 I am not very knowledgable about the typesystem internals, so I couldn't come up with a good name for the test. But I'm happy to move it to a more appropriate place if there is one (`tests/ui/impl-trait/non-defining-uses` maybe?) r? types (or reroll as appropriate if this is not actually a T-types issue; i'm clueless)
| -rw-r--r-- | tests/ui/impl-trait/non-defining-uses/double-wrap-with-defining-use.rs | 12 | ||||
| -rw-r--r-- | tests/ui/impl-trait/non-defining-uses/double-wrap-with-defining-use.stderr | 17 |
2 files changed, 29 insertions, 0 deletions
diff --git a/tests/ui/impl-trait/non-defining-uses/double-wrap-with-defining-use.rs b/tests/ui/impl-trait/non-defining-uses/double-wrap-with-defining-use.rs new file mode 100644 index 00000000000..339277fec37 --- /dev/null +++ b/tests/ui/impl-trait/non-defining-uses/double-wrap-with-defining-use.rs @@ -0,0 +1,12 @@ +// Regression test for ICE from issue #140545 +// The error message is confusing and wrong, but that's a different problem (#139350) +//@ edition:2018 + +trait Foo {} +fn a(x: impl Foo) -> impl Foo { + if true { x } else { a(a(x)) } + //~^ ERROR: expected generic type parameter, found `impl Foo` [E0792] + //~| ERROR: type parameter `impl Foo` is part of concrete type but not used in parameter list for the `impl Trait` type alias +} + +fn main(){} diff --git a/tests/ui/impl-trait/non-defining-uses/double-wrap-with-defining-use.stderr b/tests/ui/impl-trait/non-defining-uses/double-wrap-with-defining-use.stderr new file mode 100644 index 00000000000..1b02811e31b --- /dev/null +++ b/tests/ui/impl-trait/non-defining-uses/double-wrap-with-defining-use.stderr @@ -0,0 +1,17 @@ +error[E0792]: expected generic type parameter, found `impl Foo` + --> $DIR/double-wrap-with-defining-use.rs:7:26 + | +LL | fn a(x: impl Foo) -> impl Foo { + | -------- this generic parameter must be used with a generic type parameter +LL | if true { x } else { a(a(x)) } + | ^^^^^^^ + +error: type parameter `impl Foo` is part of concrete type but not used in parameter list for the `impl Trait` type alias + --> $DIR/double-wrap-with-defining-use.rs:7:26 + | +LL | if true { x } else { a(a(x)) } + | ^^^^^^^ + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0792`. |
