@@ -1464,6 +1464,18 @@ private predicate externCrateEdge(ExternCrateItemNode ec, string name, CrateItem
14641464 )
14651465}
14661466
1467+ pragma [ nomagic]
1468+ private predicate preludeItem ( string name , ItemNode i ) {
1469+ exists ( Crate stdOrCore , ModuleLikeNode mod , ModuleItemNode prelude , ModuleItemNode rust |
1470+ stdOrCore .getName ( ) = [ "std" , "core" ] and
1471+ mod = stdOrCore .getSourceFile ( ) and
1472+ prelude = mod .getASuccessorRec ( "prelude" ) and
1473+ rust = prelude .getASuccessorRec ( [ "rust_2015" , "rust_2018" , "rust_2021" , "rust_2024" ] ) and
1474+ i = rust .getASuccessorRec ( name ) and
1475+ not i instanceof Use
1476+ )
1477+ }
1478+
14671479/**
14681480 * Holds if `i` is available inside `f` because it is reexported in
14691481 * [the `core` prelude][1] or [the `std` prelude][2].
@@ -1476,15 +1488,8 @@ private predicate externCrateEdge(ExternCrateItemNode ec, string name, CrateItem
14761488 */
14771489pragma [ nomagic]
14781490private predicate preludeEdge ( SourceFile f , string name , ItemNode i ) {
1479- not declares ( f , _, name ) and
1480- exists ( Crate stdOrCore , ModuleLikeNode mod , ModuleItemNode prelude , ModuleItemNode rust |
1481- stdOrCore .getName ( ) = [ "std" , "core" ] and
1482- mod = stdOrCore .getSourceFile ( ) and
1483- prelude = mod .getASuccessorRec ( "prelude" ) and
1484- rust = prelude .getASuccessorRec ( [ "rust_2015" , "rust_2018" , "rust_2021" , "rust_2024" ] ) and
1485- i = rust .getASuccessorRec ( name ) and
1486- not i instanceof Use
1487- )
1491+ preludeItem ( name , i ) and
1492+ not declares ( f , _, name )
14881493}
14891494
14901495pragma [ nomagic]
0 commit comments