Skip to content

Commit 7ee817e

Browse files
authored
Rollup merge of #85896 - BoxyUwU:remove-fixme-fwd-declared-const-default, r=petrochenkov
Add test for forward declared const param defaults
2 parents 0d4bbc5 + ba680aa commit 7ee817e

File tree

4 files changed

+45
-3
lines changed

4 files changed

+45
-3
lines changed

compiler/rustc_resolve/src/diagnostics.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ impl<'a> Resolver<'a> {
450450
err.span_label(shadowed_binding_span, msg);
451451
err
452452
}
453-
ResolutionError::ForwardDeclaredTyParam => {
453+
ResolutionError::ForwardDeclaredGenericParam => {
454454
let mut err = struct_span_err!(
455455
self.session,
456456
span,

compiler/rustc_resolve/src/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ enum ResolutionError<'a> {
242242
shadowed_binding_span: Span,
243243
},
244244
/// Error E0128: generic parameters with a default cannot use forward-declared identifiers.
245-
ForwardDeclaredTyParam, // FIXME(const_generics_defaults)
245+
ForwardDeclaredGenericParam,
246246
/// ERROR E0770: the type of const parameters must not depend on other generic parameters.
247247
ParamInTyOfConstParam(Symbol),
248248
/// generic parameters must not be used inside const evaluations.
@@ -2608,7 +2608,7 @@ impl<'a> Resolver<'a> {
26082608
let res_error = if rib_ident.name == kw::SelfUpper {
26092609
ResolutionError::SelfInTyParamDefault
26102610
} else {
2611-
ResolutionError::ForwardDeclaredTyParam
2611+
ResolutionError::ForwardDeclaredGenericParam
26122612
};
26132613
self.report_error(span, res_error);
26142614
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#![feature(const_generics_defaults)]
2+
3+
struct Foo<const N: usize = M, const M: usize = 10>;
4+
//~^ ERROR generic parameters with a default cannot use forward declared identifiers
5+
6+
enum Bar<const N: usize = M, const M: usize = 10> {}
7+
//~^ ERROR generic parameters with a default cannot use forward declared identifiers
8+
9+
struct Foo2<const N: usize = N>;
10+
//~^ ERROR generic parameters with a default cannot use forward declared identifiers
11+
12+
enum Bar2<const N: usize = N> {}
13+
//~^ ERROR generic parameters with a default cannot use forward declared identifiers
14+
15+
fn main() {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
error[E0128]: generic parameters with a default cannot use forward declared identifiers
2+
--> $DIR/forward-declared.rs:3:29
3+
|
4+
LL | struct Foo<const N: usize = M, const M: usize = 10>;
5+
| ^ defaulted generic parameters cannot be forward declared
6+
7+
error[E0128]: generic parameters with a default cannot use forward declared identifiers
8+
--> $DIR/forward-declared.rs:6:27
9+
|
10+
LL | enum Bar<const N: usize = M, const M: usize = 10> {}
11+
| ^ defaulted generic parameters cannot be forward declared
12+
13+
error[E0128]: generic parameters with a default cannot use forward declared identifiers
14+
--> $DIR/forward-declared.rs:9:30
15+
|
16+
LL | struct Foo2<const N: usize = N>;
17+
| ^ defaulted generic parameters cannot be forward declared
18+
19+
error[E0128]: generic parameters with a default cannot use forward declared identifiers
20+
--> $DIR/forward-declared.rs:12:28
21+
|
22+
LL | enum Bar2<const N: usize = N> {}
23+
| ^ defaulted generic parameters cannot be forward declared
24+
25+
error: aborting due to 4 previous errors
26+
27+
For more information about this error, try `rustc --explain E0128`.

0 commit comments

Comments
 (0)