Skip to content

Commit da189d9

Browse files
committed
Change type param -> generic param
1 parent ee5ed4a commit da189d9

6 files changed

+60
-23
lines changed

compiler/rustc_resolve/src/diagnostics.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -502,14 +502,14 @@ impl<'a> Resolver<'a> {
502502

503503
err
504504
}
505-
ResolutionError::SelfInTyParamDefault => {
505+
ResolutionError::SelfInGenericParamDefault => {
506506
let mut err = struct_span_err!(
507507
self.session,
508508
span,
509509
E0735,
510-
"type parameters cannot use `Self` in their defaults"
510+
"generic parameters cannot use `Self` in their defaults"
511511
);
512-
err.span_label(span, "`Self` in type parameter default".to_string());
512+
err.span_label(span, "`Self` in generic parameter default".to_string());
513513
err
514514
}
515515
ResolutionError::UnreachableLabel { name, definition_span, suggestion } => {

compiler/rustc_resolve/src/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ enum ResolutionError<'a> {
249249
/// This error is only emitted when using `min_const_generics`.
250250
ParamInNonTrivialAnonConst { name: Symbol, is_type: bool },
251251
/// Error E0735: generic parameters with a default cannot use `Self`
252-
SelfInTyParamDefault,
252+
SelfInGenericParamDefault,
253253
/// Error E0767: use of unreachable label
254254
UnreachableLabel { name: Symbol, definition_span: Span, suggestion: Option<LabelSuggestion> },
255255
}
@@ -2643,7 +2643,7 @@ impl<'a> Resolver<'a> {
26432643
if let ForwardGenericParamBanRibKind = all_ribs[rib_index].kind {
26442644
if record_used {
26452645
let res_error = if rib_ident.name == kw::SelfUpper {
2646-
ResolutionError::SelfInTyParamDefault
2646+
ResolutionError::SelfInGenericParamDefault
26472647
} else {
26482648
ResolutionError::ForwardDeclaredGenericParam
26492649
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#![feature(const_generics_defaults)]
2+
3+
struct Struct<const N: usize = { Self; 10 }>;
4+
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
5+
6+
enum Enum<const N: usize = { Self; 10 }> { }
7+
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
8+
9+
union Union<const N: usize = { Self; 10 }> { not_empty: () }
10+
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
11+
12+
fn main() {
13+
let _: Struct;
14+
let _: Enum;
15+
let _: Union;
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
error[E0735]: generic parameters cannot use `Self` in their defaults
2+
--> $DIR/default-const-param-cannot-reference-self.rs:3:36
3+
|
4+
LL | struct Snobound<const N: usize = { Self; 10 }>;
5+
| ^^^^ `Self` in generic parameter default
6+
7+
error[E0735]: generic parameters cannot use `Self` in their defaults
8+
--> $DIR/default-const-param-cannot-reference-self.rs:6:34
9+
|
10+
LL | enum Enobound<const N: usize = { Self; 10 }> { }
11+
| ^^^^ `Self` in generic parameter default
12+
13+
error[E0735]: generic parameters cannot use `Self` in their defaults
14+
--> $DIR/default-const-param-cannot-reference-self.rs:9:35
15+
|
16+
LL | union Unobound<const N: usize = { Self; 10 }> { not_empty: () }
17+
| ^^^^ `Self` in generic parameter default
18+
19+
error: aborting due to 3 previous errors
20+
21+
For more information about this error, try `rustc --explain E0735`.

src/test/ui/generics/issue-61631-default-type-param-cannot-reference-self.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,25 @@
1111
// compatibility concern.
1212

1313
struct Snobound<'a, P = Self> { x: Option<&'a P> }
14-
//~^ ERROR type parameters cannot use `Self` in their defaults [E0735]
14+
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
1515

1616
enum Enobound<'a, P = Self> { A, B(Option<&'a P>) }
17-
//~^ ERROR type parameters cannot use `Self` in their defaults [E0735]
17+
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
1818

1919
union Unobound<'a, P = Self> { x: i32, y: Option<&'a P> }
20-
//~^ ERROR type parameters cannot use `Self` in their defaults [E0735]
20+
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
2121

2222
// Disallowing `Self` in defaults sidesteps need to check the bounds
2323
// on the defaults in cases like these.
2424

2525
struct Ssized<'a, P: Sized = [Self]> { x: Option<&'a P> }
26-
//~^ ERROR type parameters cannot use `Self` in their defaults [E0735]
26+
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
2727

2828
enum Esized<'a, P: Sized = [Self]> { A, B(Option<&'a P>) }
29-
//~^ ERROR type parameters cannot use `Self` in their defaults [E0735]
29+
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
3030

3131
union Usized<'a, P: Sized = [Self]> { x: i32, y: Option<&'a P> }
32-
//~^ ERROR type parameters cannot use `Self` in their defaults [E0735]
32+
//~^ ERROR generic parameters cannot use `Self` in their defaults [E0735]
3333

3434
fn demo_usages() {
3535
// An ICE means you only get the error from the first line of the

src/test/ui/generics/issue-61631-default-type-param-cannot-reference-self.stderr

+12-12
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,38 @@
1-
error[E0735]: type parameters cannot use `Self` in their defaults
1+
error[E0735]: generic parameters cannot use `Self` in their defaults
22
--> $DIR/issue-61631-default-type-param-cannot-reference-self.rs:13:25
33
|
44
LL | struct Snobound<'a, P = Self> { x: Option<&'a P> }
5-
| ^^^^ `Self` in type parameter default
5+
| ^^^^ `Self` in generic parameter default
66

7-
error[E0735]: type parameters cannot use `Self` in their defaults
7+
error[E0735]: generic parameters cannot use `Self` in their defaults
88
--> $DIR/issue-61631-default-type-param-cannot-reference-self.rs:16:23
99
|
1010
LL | enum Enobound<'a, P = Self> { A, B(Option<&'a P>) }
11-
| ^^^^ `Self` in type parameter default
11+
| ^^^^ `Self` in generic parameter default
1212

13-
error[E0735]: type parameters cannot use `Self` in their defaults
13+
error[E0735]: generic parameters cannot use `Self` in their defaults
1414
--> $DIR/issue-61631-default-type-param-cannot-reference-self.rs:19:24
1515
|
1616
LL | union Unobound<'a, P = Self> { x: i32, y: Option<&'a P> }
17-
| ^^^^ `Self` in type parameter default
17+
| ^^^^ `Self` in generic parameter default
1818

19-
error[E0735]: type parameters cannot use `Self` in their defaults
19+
error[E0735]: generic parameters cannot use `Self` in their defaults
2020
--> $DIR/issue-61631-default-type-param-cannot-reference-self.rs:25:31
2121
|
2222
LL | struct Ssized<'a, P: Sized = [Self]> { x: Option<&'a P> }
23-
| ^^^^ `Self` in type parameter default
23+
| ^^^^ `Self` in generic parameter default
2424

25-
error[E0735]: type parameters cannot use `Self` in their defaults
25+
error[E0735]: generic parameters cannot use `Self` in their defaults
2626
--> $DIR/issue-61631-default-type-param-cannot-reference-self.rs:28:29
2727
|
2828
LL | enum Esized<'a, P: Sized = [Self]> { A, B(Option<&'a P>) }
29-
| ^^^^ `Self` in type parameter default
29+
| ^^^^ `Self` in generic parameter default
3030

31-
error[E0735]: type parameters cannot use `Self` in their defaults
31+
error[E0735]: generic parameters cannot use `Self` in their defaults
3232
--> $DIR/issue-61631-default-type-param-cannot-reference-self.rs:31:30
3333
|
3434
LL | union Usized<'a, P: Sized = [Self]> { x: i32, y: Option<&'a P> }
35-
| ^^^^ `Self` in type parameter default
35+
| ^^^^ `Self` in generic parameter default
3636

3737
error: aborting due to 6 previous errors
3838

0 commit comments

Comments
 (0)