@@ -275,7 +275,7 @@ abstract class ItemNode extends Locatable {
275275 )
276276 }
277277
278- ItemNode getASuccessorExternal ( string name ) {
278+ ItemNode getASuccessor ( string name ) {
279279 exists ( SuccessorKind kind | result = this .getASuccessor ( name , kind ) |
280280 kind .isExternal ( )
281281 or
@@ -602,7 +602,7 @@ class ImplItemNode extends ImplOrTraitItemNode instanceof Impl {
602602
603603 Path getTraitPath ( ) { result = super .getTrait ( ) .( PathTypeRepr ) .getPath ( ) }
604604
605- ItemNode resolveSelfTy ( ) { result = resolvePath ( this .getSelfPath ( ) ) }
605+ TypeItemNode resolveSelfTy ( ) { result = resolvePath ( this .getSelfPath ( ) ) }
606606
607607 TraitItemNode resolveTraitTy ( ) { result = resolvePath ( this .getTraitPath ( ) ) }
608608
@@ -691,7 +691,7 @@ class ImplItemNode extends ImplOrTraitItemNode instanceof Impl {
691691 }
692692}
693693
694- private class ImplTraitTypeReprItemNode extends ItemNode instanceof ImplTraitTypeRepr {
694+ private class ImplTraitTypeReprItemNode extends TypeItemNode instanceof ImplTraitTypeRepr {
695695 pragma [ nomagic]
696696 Path getABoundPath ( ) {
697697 result = super .getTypeBoundList ( ) .getABound ( ) .getTypeRepr ( ) .( PathTypeRepr ) .getPath ( )
@@ -1138,11 +1138,6 @@ private class BuiltinSourceFile extends SourceFileItemNode {
11381138pragma [ nomagic]
11391139private predicate crateDependencyEdge ( SourceFileItemNode file , string name , CrateItemNode dep ) {
11401140 exists ( CrateItemNode c | dep = c .( Crate ) .getDependency ( name ) | file = c .getASourceFile ( ) )
1141- or
1142- // Give builtin files access to `std`
1143- file instanceof BuiltinSourceFile and
1144- dep .getName ( ) = name and
1145- name = "std"
11461141}
11471142
11481143private predicate useTreeDeclares ( UseTree tree , string name ) {
@@ -1350,7 +1345,17 @@ private predicate pathUsesNamespace(Path p, Namespace n) {
13501345/** Gets the item that `path` resolves to, if any. */
13511346cached
13521347ItemNode resolvePath ( RelevantPath path ) {
1353- exists ( Namespace ns | result = resolvePath0 ( path , ns , _) |
1348+ exists ( Namespace ns |
1349+ result = resolvePath0 ( path , ns , _) and
1350+ if path = any ( ImplItemNode i ) .getSelfPath ( )
1351+ then
1352+ result instanceof TypeItemNode and
1353+ not result instanceof TraitItemNode
1354+ else
1355+ if path = any ( ImplItemNode i ) .getTraitPath ( )
1356+ then result instanceof TraitItemNode
1357+ else any ( )
1358+ |
13541359 pathUsesNamespace ( path , ns )
13551360 or
13561361 not pathUsesNamespace ( path , _) and
@@ -1462,12 +1467,20 @@ private predicate externCrateEdge(ExternCrateItemNode ec, string name, CrateItem
14621467
14631468pragma [ nomagic]
14641469private predicate preludeItem ( string name , ItemNode i ) {
1465- exists ( Crate stdOrCore , ModuleLikeNode mod , ModuleItemNode prelude , ModuleItemNode rust |
1466- stdOrCore .getName ( ) = [ "std" , "core" ] and
1470+ exists (
1471+ Crate stdOrCore , string stdOrCoreName , ModuleLikeNode mod , ModuleItemNode prelude ,
1472+ ModuleItemNode rust
1473+ |
1474+ stdOrCore .getName ( ) = stdOrCoreName and
1475+ stdOrCoreName = [ "std" , "core" ]
1476+ |
1477+ name = stdOrCoreName and
1478+ i = stdOrCore
1479+ or
14671480 mod = stdOrCore .getSourceFile ( ) and
1468- prelude = mod .getASuccessorExternal ( "prelude" ) and
1469- rust = prelude .getASuccessorExternal ( [ "rust_2015" , "rust_2018" , "rust_2021" , "rust_2024" ] ) and
1470- i = rust .getASuccessorExternal ( name ) and
1481+ prelude = mod .getASuccessor ( "prelude" ) and
1482+ rust = prelude .getASuccessor ( [ "rust_2015" , "rust_2018" , "rust_2021" , "rust_2024" ] ) and
1483+ i = rust .getASuccessor ( name , _ ) and
14711484 not name = [ "super" , "self" ]
14721485 )
14731486}
@@ -1492,7 +1505,7 @@ pragma[nomagic]
14921505private predicate builtin ( string name , ItemNode i ) {
14931506 exists ( BuiltinSourceFile builtins |
14941507 builtins .getFile ( ) .getBaseName ( ) = "types.rs" and
1495- i = builtins .getASuccessorExternal ( name )
1508+ i = builtins .getASuccessor ( name , _ )
14961509 )
14971510}
14981511
0 commit comments