@@ -1615,15 +1615,6 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
1615
1615
intravisit:: walk_crate ( self , krate) ;
1616
1616
}
1617
1617
1618
- fn check_if_primitive_type_name ( & self , name : Name , span : Span ) {
1619
- if let Some ( _) = self . primitive_type_table . primitive_types . get ( & name) {
1620
- span_err ! ( self . session,
1621
- span,
1622
- E0317 ,
1623
- "user-defined types or type parameters cannot shadow the primitive types" ) ;
1624
- }
1625
- }
1626
-
1627
1618
fn resolve_item ( & mut self , item : & Item ) {
1628
1619
let name = item. name ;
1629
1620
@@ -1633,8 +1624,6 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
1633
1624
ItemEnum ( _, ref generics) |
1634
1625
ItemTy ( _, ref generics) |
1635
1626
ItemStruct ( _, ref generics) => {
1636
- self . check_if_primitive_type_name ( name, item. span ) ;
1637
-
1638
1627
self . with_type_parameter_rib ( HasTypeParameters ( generics, TypeSpace , ItemRibKind ) ,
1639
1628
|this| intravisit:: walk_item ( this, item) ) ;
1640
1629
}
@@ -1655,8 +1644,6 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
1655
1644
}
1656
1645
1657
1646
ItemTrait ( _, ref generics, ref bounds, ref trait_items) => {
1658
- self . check_if_primitive_type_name ( name, item. span ) ;
1659
-
1660
1647
// Create a new rib for the trait-wide type parameters.
1661
1648
self . with_type_parameter_rib ( HasTypeParameters ( generics,
1662
1649
TypeSpace ,
@@ -1691,8 +1678,6 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
1691
1678
} ) ;
1692
1679
}
1693
1680
hir:: TypeTraitItem ( ..) => {
1694
- this. check_if_primitive_type_name ( trait_item. name ,
1695
- trait_item. span ) ;
1696
1681
this. with_type_parameter_rib ( NoTypeParameters , |this| {
1697
1682
intravisit:: walk_trait_item ( this, trait_item)
1698
1683
} ) ;
@@ -1716,28 +1701,8 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
1716
1701
}
1717
1702
1718
1703
ItemUse ( ref view_path) => {
1719
- // check for imports shadowing primitive types
1720
- let check_rename = |this : & Self , id, name| {
1721
- match this. def_map . borrow ( ) . get ( & id) . map ( |d| d. full_def ( ) ) {
1722
- Some ( Def :: Enum ( ..) ) | Some ( Def :: TyAlias ( ..) ) | Some ( Def :: Struct ( ..) ) |
1723
- Some ( Def :: Trait ( ..) ) | None => {
1724
- this. check_if_primitive_type_name ( name, item. span ) ;
1725
- }
1726
- _ => { }
1727
- }
1728
- } ;
1729
-
1730
1704
match view_path. node {
1731
- hir:: ViewPathSimple ( name, _) => {
1732
- check_rename ( self , item. id , name) ;
1733
- }
1734
1705
hir:: ViewPathList ( ref prefix, ref items) => {
1735
- for item in items {
1736
- if let Some ( name) = item. node . rename ( ) {
1737
- check_rename ( self , item. node . id ( ) , name) ;
1738
- }
1739
- }
1740
-
1741
1706
// Resolve prefix of an import with empty braces (issue #28388)
1742
1707
if items. is_empty ( ) && !prefix. segments . is_empty ( ) {
1743
1708
match self . resolve_crate_relative_path ( prefix. span ,
@@ -1918,9 +1883,6 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
1918
1883
}
1919
1884
1920
1885
fn resolve_generics ( & mut self , generics : & Generics ) {
1921
- for type_parameter in generics. ty_params . iter ( ) {
1922
- self . check_if_primitive_type_name ( type_parameter. name , type_parameter. span ) ;
1923
- }
1924
1886
for predicate in & generics. where_clause . predicates {
1925
1887
match predicate {
1926
1888
& hir:: WherePredicate :: BoundPredicate ( _) |
@@ -2699,7 +2661,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
2699
2661
-> Option < LocalDef > {
2700
2662
let def = self . resolve_identifier ( identifier, namespace, check_ribs, record_used) ;
2701
2663
match def {
2702
- None | Some ( LocalDef { def : Def :: Mod ( ..) , ..} ) => {
2664
+ None | Some ( LocalDef { def : Def :: Mod ( ..) , ..} ) if namespace == TypeNS => {
2703
2665
if let Some ( & prim_ty) = self . primitive_type_table
2704
2666
. primitive_types
2705
2667
. get ( & identifier. unhygienic_name ) {
0 commit comments