@@ -188,6 +188,7 @@ abstract class ItemNode extends Locatable {
188188 crateDefEdge ( this , name , result , kind )
189189 or
190190 crateDependencyEdge ( this , name , result ) and
191+ not declares ( this , TTypeNamespace ( ) , name ) and
191192 kind .isInternal ( )
192193 or
193194 externCrateEdge ( this , name , result ) and
@@ -1153,6 +1154,11 @@ private class BuiltinSourceFile extends SourceFileItemNode {
11531154pragma [ nomagic]
11541155private predicate crateDependencyEdge ( SourceFileItemNode file , string name , CrateItemNode dep ) {
11551156 exists ( CrateItemNode c | dep = c .( Crate ) .getDependency ( name ) | file = c .getASourceFile ( ) )
1157+ or
1158+ // All files _should_ belong to a crate, but for those where we cannot identify the crate,
1159+ // we give access to all crates as a fallback.
1160+ not file = any ( Crate c ) .getASourceFile ( ) and
1161+ name = dep .getName ( )
11561162}
11571163
11581164private predicate useTreeDeclares ( UseTree tree , string name ) {
@@ -1482,20 +1488,13 @@ private predicate externCrateEdge(ExternCrateItemNode ec, string name, CrateItem
14821488
14831489pragma [ nomagic]
14841490private predicate preludeItem ( string name , ItemNode i ) {
1485- exists ( Crate stdOrCore , string stdOrCoreName |
1486- stdOrCore .getName ( ) = stdOrCoreName and
1487- stdOrCoreName = [ "std" , "core" ]
1488- |
1489- name = stdOrCoreName and
1490- i = stdOrCore
1491- or
1492- exists ( ModuleLikeNode mod , ModuleItemNode prelude , ModuleItemNode rust |
1493- mod = stdOrCore .getSourceFile ( ) and
1494- prelude = mod .getASuccessor ( "prelude" ) and
1495- rust = prelude .getASuccessor ( [ "rust_2015" , "rust_2018" , "rust_2021" , "rust_2024" ] ) and
1496- i = rust .getASuccessor ( name ) and
1497- not name = [ "super" , "self" ]
1498- )
1491+ exists ( Crate stdOrCore , ModuleLikeNode mod , ModuleItemNode prelude , ModuleItemNode rust |
1492+ stdOrCore .getName ( ) = [ "std" , "core" ] and
1493+ mod = stdOrCore .getSourceFile ( ) and
1494+ prelude = mod .getASuccessor ( "prelude" ) and
1495+ rust = prelude .getASuccessor ( [ "rust_2015" , "rust_2018" , "rust_2021" , "rust_2024" ] ) and
1496+ i = rust .getASuccessor ( name ) and
1497+ not name = [ "super" , "self" ]
14991498 )
15001499}
15011500
0 commit comments