Rollup merge of #86764 - estebank:issue-86756, r=pnkfelix
Avoid ICE on type error recovery Fix #86756
This commit is contained in:
commit
4e1ebf23cd
3 changed files with 68 additions and 2 deletions
12
src/test/ui/issues/issue-86756.rs
Normal file
12
src/test/ui/issues/issue-86756.rs
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
trait Foo<T, T = T> {}
|
||||
//~^ ERROR the name `T` is already used for a generic parameter in this item's generic parameters
|
||||
|
||||
fn eq<A, B>() {
|
||||
eq::<dyn, Foo>
|
||||
//~^ ERROR cannot find type `dyn` in this scope
|
||||
//~| ERROR missing generics for trait `Foo`
|
||||
//~| WARN trait objects without an explicit `dyn` are deprecated
|
||||
//~| WARN this is accepted in the current edition
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
46
src/test/ui/issues/issue-86756.stderr
Normal file
46
src/test/ui/issues/issue-86756.stderr
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
error[E0403]: the name `T` is already used for a generic parameter in this item's generic parameters
|
||||
--> $DIR/issue-86756.rs:1:14
|
||||
|
|
||||
LL | trait Foo<T, T = T> {}
|
||||
| - ^ already used
|
||||
| |
|
||||
| first use of `T`
|
||||
|
||||
error[E0412]: cannot find type `dyn` in this scope
|
||||
--> $DIR/issue-86756.rs:5:10
|
||||
|
|
||||
LL | fn eq<A, B>() {
|
||||
| - help: you might be missing a type parameter: `, dyn`
|
||||
LL | eq::<dyn, Foo>
|
||||
| ^^^ not found in this scope
|
||||
|
||||
warning: trait objects without an explicit `dyn` are deprecated
|
||||
--> $DIR/issue-86756.rs:5:15
|
||||
|
|
||||
LL | eq::<dyn, Foo>
|
||||
| ^^^ help: use `dyn`: `dyn Foo`
|
||||
|
|
||||
= note: `#[warn(bare_trait_objects)]` on by default
|
||||
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
||||
= note: for more information, see issue #80165 <https://github.com/rust-lang/rust/issues/80165>
|
||||
|
||||
error[E0107]: missing generics for trait `Foo`
|
||||
--> $DIR/issue-86756.rs:5:15
|
||||
|
|
||||
LL | eq::<dyn, Foo>
|
||||
| ^^^ expected at least 1 generic argument
|
||||
|
|
||||
note: trait defined here, with at least 1 generic parameter: `T`
|
||||
--> $DIR/issue-86756.rs:1:7
|
||||
|
|
||||
LL | trait Foo<T, T = T> {}
|
||||
| ^^^ -
|
||||
help: add missing generic argument
|
||||
|
|
||||
LL | eq::<dyn, Foo<T>>
|
||||
| ^^^^^^
|
||||
|
||||
error: aborting due to 3 previous errors; 1 warning emitted
|
||||
|
||||
Some errors have detailed explanations: E0107, E0403, E0412.
|
||||
For more information about an error, try `rustc --explain E0107`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue