Skip to content

Commit 14646ec

Browse files
committed
Add note to E0401
1 parent 48dde00 commit 14646ec

21 files changed

+42
-1
lines changed

compiler/rustc_resolve/messages.ftl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ resolve_generic_params_from_outer_item =
175175
} from outer item
176176
.refer_to_type_directly = refer to the type directly here instead
177177
.suggestion = try introducing a local generic parameter here
178+
.note = nested items are independent from their parent item for everything except for privacy and name resolution
178179
179180
resolve_generic_params_from_outer_item_const = a `const` is a separate item from the item that contains it
180181

compiler/rustc_resolve/src/errors.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use crate::{Res, fluent_generated as fluent};
1111

1212
#[derive(Diagnostic)]
1313
#[diag(resolve_generic_params_from_outer_item, code = E0401)]
14+
#[note]
1415
pub(crate) struct GenericParamsFromOuterItem {
1516
#[primary_span]
1617
#[label]

tests/ui/const-generics/early/const-param-from-outer-fn.stderr

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ LL | fn bar() -> u32 {
88
LL | X
99
| ^ use of generic parameter from outer item
1010
|
11+
= note: nested items are independent from their parent item for everything except for privacy and name resolution
1112
help: try introducing a local generic parameter here
1213
|
1314
LL | fn bar<X>() -> u32 {

tests/ui/delegation/target-expr.stderr

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ LL | reuse Trait::static_method {
88
LL |
99
LL | let _ = T::Default();
1010
| ^ use of generic parameter from outer item
11+
|
12+
= note: nested items are independent from their parent item for everything except for privacy and name resolution
1113

1214
error[E0434]: can't capture dynamic environment in a fn item
1315
--> $DIR/target-expr.rs:26:17

tests/ui/error-codes/E0401.stderr

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ LL | fn bfnr<U, V: Baz<U>, W: Fn()>(y: T) {
88
| |
99
| generic parameter used in this inner function
1010
|
11+
= note: nested items are independent from their parent item for everything except for privacy and name resolution
1112
help: try introducing a local generic parameter here
1213
|
1314
LL | fn bfnr<T, U, V: Baz<U>, W: Fn()>(y: T) {
@@ -25,6 +26,7 @@ LL | fn baz<U,
2526
LL | (y: T) {
2627
| ^ use of generic parameter from outer item
2728
|
29+
= note: nested items are independent from their parent item for everything except for privacy and name resolution
2830
help: try introducing a local generic parameter here
2931
|
3032
LL | fn baz<T, U,
@@ -41,6 +43,7 @@ LL | fn helper(sel: &Self) -> u8 {
4143
| |
4244
| `Self` used in this inner function
4345
|
46+
= note: nested items are independent from their parent item for everything except for privacy and name resolution
4447
help: refer to the type directly here instead
4548
|
4649
LL - fn helper(sel: &Self) -> u8 {

tests/ui/generics/enum-definition-with-outer-generic-parameter-5997.stderr

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ LL | enum E { V(Z) }
88
| |
99
| generic parameter used in this inner enum
1010
|
11+
= note: nested items are independent from their parent item for everything except for privacy and name resolution
1112
help: try introducing a local generic parameter here
1213
|
1314
LL | enum E<Z> { V(Z) }

tests/ui/generics/generic-params-nested-fn-scope-error.stderr

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ LL | fn bar(w: [U]) -> U {
88
| |
99
| generic parameter used in this inner function
1010
|
11+
= note: nested items are independent from their parent item for everything except for privacy and name resolution
1112
help: try introducing a local generic parameter here
1213
|
1314
LL | fn bar<U>(w: [U]) -> U {
@@ -23,6 +24,7 @@ LL | fn bar(w: [U]) -> U {
2324
| |
2425
| generic parameter used in this inner function
2526
|
27+
= note: nested items are independent from their parent item for everything except for privacy and name resolution
2628
help: try introducing a local generic parameter here
2729
|
2830
LL | fn bar<U>(w: [U]) -> U {

tests/ui/generics/issue-98432.stderr

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ LL | struct _Obligation where T:;
99
| |
1010
| generic parameter used in this inner struct
1111
|
12+
= note: nested items are independent from their parent item for everything except for privacy and name resolution
1213
help: try introducing a local generic parameter here
1314
|
1415
LL | struct _Obligation<T> where T:;

tests/ui/resolve/bad-type-env-capture.stderr

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ LL | fn bar(b: T) { }
88
| |
99
| generic parameter used in this inner function
1010
|
11+
= note: nested items are independent from their parent item for everything except for privacy and name resolution
1112
help: try introducing a local generic parameter here
1213
|
1314
LL | fn bar<T>(b: T) { }

tests/ui/resolve/generic-params-from-outer-item-in-const-item.default.stderr

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ LL | const K: u32 = T::C;
88
| |
99
| generic parameter used in this inner constant item
1010
|
11+
= note: nested items are independent from their parent item for everything except for privacy and name resolution
1112
= note: a `const` is a separate item from the item that contains it
1213

1314
error[E0401]: can't use generic parameters from outer item
@@ -21,6 +22,7 @@ LL | const I: u32 = T::C;
2122
| |
2223
| generic parameter used in this inner constant item
2324
|
25+
= note: nested items are independent from their parent item for everything except for privacy and name resolution
2426
= note: a `const` is a separate item from the item that contains it
2527

2628
error[E0401]: can't use generic parameters from outer item
@@ -33,6 +35,7 @@ LL | const _: u32 = T::C;
3335
| |
3436
| generic parameter used in this inner constant item
3537
|
38+
= note: nested items are independent from their parent item for everything except for privacy and name resolution
3639
= note: a `const` is a separate item from the item that contains it
3740

3841
error: aborting due to 3 previous errors

0 commit comments

Comments
 (0)