-
Notifications
You must be signed in to change notification settings - Fork 12.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of #105340 - estebank:ice-ice-baby, r=compiler-errors
Avoid ICE by accounting for missing type Fix #105330
- Loading branch information
Showing
3 changed files
with
131 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
pub trait TraitWAssocConst { | ||
const A: usize; | ||
} | ||
pub struct Demo {} | ||
|
||
impl TraitWAssocConst for impl Demo { //~ ERROR E0404 | ||
//~^ ERROR E0562 | ||
pubconst A: str = 32; //~ ERROR expected one of | ||
} | ||
|
||
fn foo<A: TraitWAssocConst<A=32>>() { //~ ERROR E0658 | ||
foo::<Demo>()(); //~ ERROR E0271 | ||
//~^ ERROR E0618 | ||
//~| ERROR E0277 | ||
} | ||
|
||
fn main<A: TraitWAssocConst<A=32>>() { //~ ERROR E0131 | ||
//~^ ERROR E0658 | ||
foo::<Demo>(); //~ ERROR E0277 | ||
//~^ ERROR E0271 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
error: expected one of `!` or `::`, found `A` | ||
--> $DIR/issue-105330.rs:8:14 | ||
| | ||
LL | impl TraitWAssocConst for impl Demo { | ||
| - while parsing this item list starting here | ||
LL | | ||
LL | pubconst A: str = 32; | ||
| ^ expected one of `!` or `::` | ||
LL | } | ||
| - the item list ends here | ||
|
||
error[E0404]: expected trait, found struct `Demo` | ||
--> $DIR/issue-105330.rs:6:32 | ||
| | ||
LL | impl TraitWAssocConst for impl Demo { | ||
| ^^^^ not a trait | ||
|
||
error[E0658]: associated const equality is incomplete | ||
--> $DIR/issue-105330.rs:11:28 | ||
| | ||
LL | fn foo<A: TraitWAssocConst<A=32>>() { | ||
| ^^^^ | ||
| | ||
= note: see issue #92827 <https://github.com/rust-lang/rust/issues/92827> for more information | ||
= help: add `#![feature(associated_const_equality)]` to the crate attributes to enable | ||
|
||
error[E0658]: associated const equality is incomplete | ||
--> $DIR/issue-105330.rs:17:29 | ||
| | ||
LL | fn main<A: TraitWAssocConst<A=32>>() { | ||
| ^^^^ | ||
| | ||
= note: see issue #92827 <https://github.com/rust-lang/rust/issues/92827> for more information | ||
= help: add `#![feature(associated_const_equality)]` to the crate attributes to enable | ||
|
||
error[E0562]: `impl Trait` only allowed in function and inherent method return types, not in type | ||
--> $DIR/issue-105330.rs:6:27 | ||
| | ||
LL | impl TraitWAssocConst for impl Demo { | ||
| ^^^^^^^^^ | ||
|
||
error[E0277]: the trait bound `Demo: TraitWAssocConst` is not satisfied | ||
--> $DIR/issue-105330.rs:12:11 | ||
| | ||
LL | foo::<Demo>()(); | ||
| ^^^^ the trait `TraitWAssocConst` is not implemented for `Demo` | ||
| | ||
note: required by a bound in `foo` | ||
--> $DIR/issue-105330.rs:11:11 | ||
| | ||
LL | fn foo<A: TraitWAssocConst<A=32>>() { | ||
| ^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `foo` | ||
|
||
error[E0271]: type mismatch resolving `<Demo as TraitWAssocConst>::A == 32` | ||
--> $DIR/issue-105330.rs:12:11 | ||
| | ||
LL | foo::<Demo>()(); | ||
| ^^^^ types differ | ||
| | ||
note: required by a bound in `foo` | ||
--> $DIR/issue-105330.rs:11:28 | ||
| | ||
LL | fn foo<A: TraitWAssocConst<A=32>>() { | ||
| ^^^^ required by this bound in `foo` | ||
|
||
error[E0618]: expected function, found `()` | ||
--> $DIR/issue-105330.rs:12:5 | ||
| | ||
LL | fn foo<A: TraitWAssocConst<A=32>>() { | ||
| ----------------------------------- `foo::<Demo>` defined here returns `()` | ||
LL | foo::<Demo>()(); | ||
| ^^^^^^^^^^^^^-- | ||
| | | ||
| call expression requires function | ||
|
||
error[E0277]: the trait bound `Demo: TraitWAssocConst` is not satisfied | ||
--> $DIR/issue-105330.rs:19:11 | ||
| | ||
LL | foo::<Demo>(); | ||
| ^^^^ the trait `TraitWAssocConst` is not implemented for `Demo` | ||
| | ||
note: required by a bound in `foo` | ||
--> $DIR/issue-105330.rs:11:11 | ||
| | ||
LL | fn foo<A: TraitWAssocConst<A=32>>() { | ||
| ^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `foo` | ||
|
||
error[E0271]: type mismatch resolving `<Demo as TraitWAssocConst>::A == 32` | ||
--> $DIR/issue-105330.rs:19:11 | ||
| | ||
LL | foo::<Demo>(); | ||
| ^^^^ types differ | ||
| | ||
note: required by a bound in `foo` | ||
--> $DIR/issue-105330.rs:11:28 | ||
| | ||
LL | fn foo<A: TraitWAssocConst<A=32>>() { | ||
| ^^^^ required by this bound in `foo` | ||
|
||
error[E0131]: `main` function is not allowed to have generic parameters | ||
--> $DIR/issue-105330.rs:17:8 | ||
| | ||
LL | fn main<A: TraitWAssocConst<A=32>>() { | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `main` cannot have generic parameters | ||
|
||
error: aborting due to 11 previous errors | ||
|
||
Some errors have detailed explanations: E0131, E0271, E0277, E0404, E0562, E0618, E0658. | ||
For more information about an error, try `rustc --explain E0131`. |