Skip to content

Commit

Permalink
Auto merge of #28406 - petrochenkov:primitive, r=eddyb
Browse files Browse the repository at this point in the history
This was missing from #27451

r? @eddyb
  • Loading branch information
bors committed Sep 15, 2015
2 parents 6d154af + cfa2925 commit 7161530
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
18 changes: 16 additions & 2 deletions src/librustc_resolve/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2211,13 +2211,27 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {

ItemUse(ref view_path) => {
// check for imports shadowing primitive types
if let hir::ViewPathSimple(ident, _) = view_path.node {
match self.def_map.borrow().get(&item.id).map(|d| d.full_def()) {
let check_rename = |id, ident: Ident| {
match self.def_map.borrow().get(&id).map(|d| d.full_def()) {
Some(DefTy(..)) | Some(DefStruct(..)) | Some(DefTrait(..)) | None => {
self.check_if_primitive_type_name(ident.name, item.span);
}
_ => {}
}
};

match view_path.node {
hir::ViewPathSimple(ident, _) => {
check_rename(item.id, ident);
}
hir::ViewPathList(_, ref items) => {
for item in items {
if let Some(ident) = item.node.rename() {
check_rename(item.node.id(), ident);
}
}
}
_ => {}
}
}

Expand Down
2 changes: 2 additions & 0 deletions src/test/compile-fail/issue-20427.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ mod char {
//~^ ERROR user-defined types or type parameters cannot shadow the primitive types
use super::bool_ as bool;
//~^ ERROR user-defined types or type parameters cannot shadow the primitive types
use super::{bool_ as str};
//~^ ERROR user-defined types or type parameters cannot shadow the primitive types
use super::char_ as char;
}
}
Expand Down

0 comments on commit 7161530

Please sign in to comment.