Change type param -> generic param
This commit is contained in:
parent
ee5ed4a88d
commit
da189d9514
6 changed files with 60 additions and 23 deletions
|
|
@ -0,0 +1,16 @@
|
|||
#![feature(const_generics_defaults)]
|
||||
|
||||
struct Struct<const N: usize = { Self; 10 }>;
|
||||
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
|
||||
|
||||
enum Enum<const N: usize = { Self; 10 }> { }
|
||||
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
|
||||
|
||||
union Union<const N: usize = { Self; 10 }> { not_empty: () }
|
||||
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
|
||||
|
||||
fn main() {
|
||||
let _: Struct;
|
||||
let _: Enum;
|
||||
let _: Union;
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
error[E0735]: generic parameters cannot use `Self` in their defaults
|
||||
--> $DIR/default-const-param-cannot-reference-self.rs:3:36
|
||||
|
|
||||
LL | struct Snobound<const N: usize = { Self; 10 }>;
|
||||
| ^^^^ `Self` in generic parameter default
|
||||
|
||||
error[E0735]: generic parameters cannot use `Self` in their defaults
|
||||
--> $DIR/default-const-param-cannot-reference-self.rs:6:34
|
||||
|
|
||||
LL | enum Enobound<const N: usize = { Self; 10 }> { }
|
||||
| ^^^^ `Self` in generic parameter default
|
||||
|
||||
error[E0735]: generic parameters cannot use `Self` in their defaults
|
||||
--> $DIR/default-const-param-cannot-reference-self.rs:9:35
|
||||
|
|
||||
LL | union Unobound<const N: usize = { Self; 10 }> { not_empty: () }
|
||||
| ^^^^ `Self` in generic parameter default
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0735`.
|
||||
|
|
@ -11,25 +11,25 @@
|
|||
// compatibility concern.
|
||||
|
||||
struct Snobound<'a, P = Self> { x: Option<&'a P> }
|
||||
//~^ ERROR type parameters cannot use `Self` in their defaults [E0735]
|
||||
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
|
||||
|
||||
enum Enobound<'a, P = Self> { A, B(Option<&'a P>) }
|
||||
//~^ ERROR type parameters cannot use `Self` in their defaults [E0735]
|
||||
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
|
||||
|
||||
union Unobound<'a, P = Self> { x: i32, y: Option<&'a P> }
|
||||
//~^ ERROR type parameters cannot use `Self` in their defaults [E0735]
|
||||
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
|
||||
|
||||
// Disallowing `Self` in defaults sidesteps need to check the bounds
|
||||
// on the defaults in cases like these.
|
||||
|
||||
struct Ssized<'a, P: Sized = [Self]> { x: Option<&'a P> }
|
||||
//~^ ERROR type parameters cannot use `Self` in their defaults [E0735]
|
||||
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
|
||||
|
||||
enum Esized<'a, P: Sized = [Self]> { A, B(Option<&'a P>) }
|
||||
//~^ ERROR type parameters cannot use `Self` in their defaults [E0735]
|
||||
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
|
||||
|
||||
union Usized<'a, P: Sized = [Self]> { x: i32, y: Option<&'a P> }
|
||||
//~^ ERROR type parameters cannot use `Self` in their defaults [E0735]
|
||||
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
|
||||
|
||||
fn demo_usages() {
|
||||
// An ICE means you only get the error from the first line of the
|
||||
|
|
|
|||
|
|
@ -1,38 +1,38 @@
|
|||
error[E0735]: type parameters cannot use `Self` in their defaults
|
||||
error[E0735]: generic parameters cannot use `Self` in their defaults
|
||||
--> $DIR/issue-61631-default-type-param-cannot-reference-self.rs:13:25
|
||||
|
|
||||
LL | struct Snobound<'a, P = Self> { x: Option<&'a P> }
|
||||
| ^^^^ `Self` in type parameter default
|
||||
| ^^^^ `Self` in generic parameter default
|
||||
|
||||
error[E0735]: type parameters cannot use `Self` in their defaults
|
||||
error[E0735]: generic parameters cannot use `Self` in their defaults
|
||||
--> $DIR/issue-61631-default-type-param-cannot-reference-self.rs:16:23
|
||||
|
|
||||
LL | enum Enobound<'a, P = Self> { A, B(Option<&'a P>) }
|
||||
| ^^^^ `Self` in type parameter default
|
||||
| ^^^^ `Self` in generic parameter default
|
||||
|
||||
error[E0735]: type parameters cannot use `Self` in their defaults
|
||||
error[E0735]: generic parameters cannot use `Self` in their defaults
|
||||
--> $DIR/issue-61631-default-type-param-cannot-reference-self.rs:19:24
|
||||
|
|
||||
LL | union Unobound<'a, P = Self> { x: i32, y: Option<&'a P> }
|
||||
| ^^^^ `Self` in type parameter default
|
||||
| ^^^^ `Self` in generic parameter default
|
||||
|
||||
error[E0735]: type parameters cannot use `Self` in their defaults
|
||||
error[E0735]: generic parameters cannot use `Self` in their defaults
|
||||
--> $DIR/issue-61631-default-type-param-cannot-reference-self.rs:25:31
|
||||
|
|
||||
LL | struct Ssized<'a, P: Sized = [Self]> { x: Option<&'a P> }
|
||||
| ^^^^ `Self` in type parameter default
|
||||
| ^^^^ `Self` in generic parameter default
|
||||
|
||||
error[E0735]: type parameters cannot use `Self` in their defaults
|
||||
error[E0735]: generic parameters cannot use `Self` in their defaults
|
||||
--> $DIR/issue-61631-default-type-param-cannot-reference-self.rs:28:29
|
||||
|
|
||||
LL | enum Esized<'a, P: Sized = [Self]> { A, B(Option<&'a P>) }
|
||||
| ^^^^ `Self` in type parameter default
|
||||
| ^^^^ `Self` in generic parameter default
|
||||
|
||||
error[E0735]: type parameters cannot use `Self` in their defaults
|
||||
error[E0735]: generic parameters cannot use `Self` in their defaults
|
||||
--> $DIR/issue-61631-default-type-param-cannot-reference-self.rs:31:30
|
||||
|
|
||||
LL | union Usized<'a, P: Sized = [Self]> { x: i32, y: Option<&'a P> }
|
||||
| ^^^^ `Self` in type parameter default
|
||||
| ^^^^ `Self` in generic parameter default
|
||||
|
||||
error: aborting due to 6 previous errors
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue