mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 06:44:35 +00:00
Don't consider RibKind::Module's bindings when checking generics shadowing
This commit is contained in:
parent
c6f81a452e
commit
78d0e08504
@ -2677,14 +2677,14 @@ impl<'a: 'ast, 'b, 'ast, 'tcx> LateResolutionVisitor<'a, 'b, 'ast, 'tcx> {
|
||||
// We also can't shadow bindings from associated parent items.
|
||||
for ns in [ValueNS, TypeNS] {
|
||||
for parent_rib in self.ribs[ns].iter().rev() {
|
||||
seen_bindings
|
||||
.extend(parent_rib.bindings.keys().map(|ident| (*ident, ident.span)));
|
||||
|
||||
// Break at mod level, to account for nested items which are
|
||||
// allowed to shadow generic param names.
|
||||
if matches!(parent_rib.kind, RibKind::Module(..)) {
|
||||
break;
|
||||
}
|
||||
|
||||
seen_bindings
|
||||
.extend(parent_rib.bindings.keys().map(|ident| (*ident, ident.span)));
|
||||
}
|
||||
}
|
||||
|
||||
|
8
tests/ui/resolve/local-shadows-inner-generic.rs
Normal file
8
tests/ui/resolve/local-shadows-inner-generic.rs
Normal file
@ -0,0 +1,8 @@
|
||||
//@ check-pass
|
||||
|
||||
#![allow(non_camel_case_types)]
|
||||
|
||||
pub fn main() {
|
||||
let a = 1;
|
||||
struct Foo<a> { field: a, };
|
||||
}
|
Loading…
Reference in New Issue
Block a user