-
Notifications
You must be signed in to change notification settings - Fork 13.4k
Add diagnostics for specific cases for const/type mismatch err #82055
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
#![crate_type="lib"] | ||
#![feature(min_const_generics)] | ||
#![allow(incomplete_features)] | ||
|
||
struct A<const N: u8>; | ||
trait Foo {} | ||
impl Foo for A<N> {} | ||
//~^ ERROR cannot find type | ||
//~| unresolved item provided when a constant | ||
|
||
struct B<const N: u8>; | ||
impl<N> Foo for B<N> {} | ||
//~^ ERROR type provided when a constant | ||
|
||
struct C<const C: u8, const N: u8>; | ||
impl<const N: u8> Foo for C<N, T> {} | ||
//~^ ERROR cannot find type | ||
//~| unresolved item provided when a constant |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
error[E0412]: cannot find type `N` in this scope | ||
--> $DIR/diagnostics.rs:7:16 | ||
| | ||
LL | struct A<const N: u8>; | ||
| ---------------------- similarly named struct `A` defined here | ||
LL | trait Foo {} | ||
LL | impl Foo for A<N> {} | ||
| ^ help: a struct with a similar name exists: `A` | ||
Comment on lines
+7
to
+8
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ideally this would suggest "you meant to add a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think it's hard to tell if a |
||
|
||
error[E0412]: cannot find type `T` in this scope | ||
--> $DIR/diagnostics.rs:16:32 | ||
| | ||
LL | struct A<const N: u8>; | ||
| ---------------------- similarly named struct `A` defined here | ||
... | ||
LL | impl<const N: u8> Foo for C<N, T> {} | ||
| ^ help: a struct with a similar name exists: `A` | ||
|
||
error[E0747]: unresolved item provided when a constant was expected | ||
--> $DIR/diagnostics.rs:7:16 | ||
| | ||
LL | impl Foo for A<N> {} | ||
| ^ | ||
| | ||
help: if this generic argument was intended as a const parameter, surround it with braces | ||
| | ||
LL | impl Foo for A<{ N }> {} | ||
| ^ ^ | ||
|
||
error[E0747]: type provided when a constant was expected | ||
--> $DIR/diagnostics.rs:12:19 | ||
| | ||
LL | impl<N> Foo for B<N> {} | ||
| - ^ | ||
| | | ||
| help: consider changing this type paramater to a `const`-generic: `const N: u8` | ||
|
||
error[E0747]: unresolved item provided when a constant was expected | ||
--> $DIR/diagnostics.rs:16:32 | ||
| | ||
LL | impl<const N: u8> Foo for C<N, T> {} | ||
| ^ | ||
| | ||
help: if this generic argument was intended as a const parameter, surround it with braces | ||
| | ||
LL | impl<const N: u8> Foo for C<N, { T }> {} | ||
| ^ ^ | ||
|
||
error: aborting due to 5 previous errors | ||
|
||
Some errors have detailed explanations: E0412, E0747. | ||
For more information about an error, try `rustc --explain E0412`. |
Uh oh!
There was an error while loading. Please reload this page.