-
Notifications
You must be signed in to change notification settings - Fork 12.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Auto merge of #94711 - ouz-a:master3, r=oli-obk
Return early to fix ICE This fixes #94627, ICE happens because compiler tries to suggest constraining type parameter but the only constraint is implicit `std::Sized` one, so it gets removed and there is nothing to suggest resulting in ICE.
- Loading branch information
Showing
3 changed files
with
93 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,11 @@ | ||
struct Bug<S>{ //~ ERROR parameter `S` is never used [E0392] | ||
A: [(); { | ||
let x: [u8; Self::W] = [0; Self::W]; //~ ERROR generic `Self` types are currently not permitted in anonymous constants | ||
//~^ ERROR generic `Self` types are currently not permitted in anonymous constants | ||
//~^^ ERROR the size for values of type `S` cannot be known at compilation time [E0277] | ||
F //~ ERROR cannot find value `F` in this scope [E0425] | ||
} | ||
} //~ ERROR mismatched closing delimiter: `}` | ||
//~^ ERROR mismatched closing delimiter: `}` | ||
|
||
fn main() {} |
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,81 @@ | ||
error: mismatched closing delimiter: `}` | ||
--> $DIR/constrain-suggest-ice.rs:2:8 | ||
| | ||
LL | struct Bug<S>{ | ||
| - closing delimiter possibly meant for this | ||
LL | A: [(); { | ||
| ^ unclosed delimiter | ||
... | ||
LL | } | ||
| ^ mismatched closing delimiter | ||
|
||
error: mismatched closing delimiter: `}` | ||
--> $DIR/constrain-suggest-ice.rs:2:8 | ||
| | ||
LL | struct Bug<S>{ | ||
| - closing delimiter possibly meant for this | ||
LL | A: [(); { | ||
| ^ unclosed delimiter | ||
... | ||
LL | } | ||
| ^ mismatched closing delimiter | ||
|
||
error[E0425]: cannot find value `F` in this scope | ||
--> $DIR/constrain-suggest-ice.rs:6:9 | ||
| | ||
LL | F | ||
| ^ | ||
| | ||
help: a local variable with a similar name exists | ||
| | ||
LL | x | ||
| ~ | ||
help: you might be missing a type parameter | ||
| | ||
LL | struct Bug<S, F>{ | ||
| +++ | ||
|
||
error: generic `Self` types are currently not permitted in anonymous constants | ||
--> $DIR/constrain-suggest-ice.rs:3:21 | ||
| | ||
LL | let x: [u8; Self::W] = [0; Self::W]; | ||
| ^^^^ | ||
|
||
error: generic `Self` types are currently not permitted in anonymous constants | ||
--> $DIR/constrain-suggest-ice.rs:3:36 | ||
| | ||
LL | let x: [u8; Self::W] = [0; Self::W]; | ||
| ^^^^ | ||
|
||
error[E0277]: the size for values of type `S` cannot be known at compilation time | ||
--> $DIR/constrain-suggest-ice.rs:3:36 | ||
| | ||
LL | struct Bug<S>{ | ||
| - this type parameter needs to be `std::marker::Sized` | ||
LL | A: [(); { | ||
LL | let x: [u8; Self::W] = [0; Self::W]; | ||
| ^^^^^^^ doesn't have a size known at compile-time | ||
| | ||
note: required by a bound in `Bug` | ||
--> $DIR/constrain-suggest-ice.rs:1:12 | ||
| | ||
LL | struct Bug<S>{ | ||
| ^ required by this bound in `Bug` | ||
help: consider relaxing the implicit `Sized` restriction | ||
| | ||
LL | struct Bug<S: ?Sized>{ | ||
| ++++++++ | ||
|
||
error[E0392]: parameter `S` is never used | ||
--> $DIR/constrain-suggest-ice.rs:1:12 | ||
| | ||
LL | struct Bug<S>{ | ||
| ^ unused parameter | ||
| | ||
= help: consider removing `S`, referring to it in a field, or using a marker such as `PhantomData` | ||
= help: if you intended `S` to be a const parameter, use `const S: usize` instead | ||
|
||
error: aborting due to 7 previous errors | ||
|
||
Some errors have detailed explanations: E0277, E0392, E0425. | ||
For more information about an error, try `rustc --explain E0277`. |