Also use outermost const-anon for impl items in non_local_defs
lint · rust-lang/rust@b5e91a0 (original) (raw)
File tree
3 files changed
lines changed
- tests/ui/lint/non-local-defs
3 files changed
lines changed
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
@@ -301,9 +301,13 @@ fn did_has_local_parent( | |||
301 | 301 | return false; | |
302 | 302 | }; | |
303 | 303 | ||
304 | -peel_parent_while(tcx, parent_did, |tcx, did | tcx.def_kind(did) == DefKind::Mod) | |
305 | -.map(|parent_did | parent_did == impl_parent | |
306 | -.unwrap_or(false) | ||
304 | +peel_parent_while(tcx, parent_did, |tcx, did | { | |
305 | + tcx.def_kind(did) == DefKind::Mod | ||
306 | + | | (tcx.def_kind(did) == DefKind::Const | |
307 | + && tcx.opt_item_name(did) == Some(kw::Underscore)) | ||
308 | +}) | ||
309 | +.map(|parent_did | parent_did == impl_parent | |
310 | +.unwrap_or(false) | ||
307 | 311 | } | |
308 | 312 | ||
309 | 313 | /// Given a `DefId` checks if it satisfies `f` if it does check with it's parent and continue |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -31,4 +31,15 @@ const _: () = { | ||
31 | 31 | }; |
32 | 32 | }; |
33 | 33 | |
34 | +// https://github.com/rust-lang/rust/issues/131643 | |
35 | +const _: () = { | |
36 | +const _: () = { | |
37 | +impl tmp::InnerTest {} | |
38 | +}; | |
39 | + | |
40 | +mod tmp { | |
41 | +pub(super) struct InnerTest; | |
42 | +} | |
43 | +}; | |
44 | + | |
34 | 45 | fn main() {} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -21,4 +21,13 @@ const _: () = { | ||
21 | 21 | }; |
22 | 22 | }; |
23 | 23 | |
24 | +// https://github.com/rust-lang/rust/issues/131643 | |
25 | +const _: () = { | |
26 | +const _: () = { | |
27 | +impl InnerTest {} | |
28 | +}; | |
29 | + | |
30 | +struct InnerTest; | |
31 | +}; | |
32 | + | |
24 | 33 | fn main() {} |