@@ -1464,6 +1464,18 @@ private predicate externCrateEdge(ExternCrateItemNode ec, string name, CrateItem
1464
1464
)
1465
1465
}
1466
1466
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
+
1467
1479
/**
1468
1480
* Holds if `i` is available inside `f` because it is reexported in
1469
1481
* [the `core` prelude][1] or [the `std` prelude][2].
@@ -1476,15 +1488,8 @@ private predicate externCrateEdge(ExternCrateItemNode ec, string name, CrateItem
1476
1488
*/
1477
1489
pragma [ nomagic]
1478
1490
private 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 )
1488
1493
}
1489
1494
1490
1495
pragma [ nomagic]
0 commit comments