@@ -194,7 +194,7 @@ abstract class ItemNode extends Locatable {
194
194
* both are included
195
195
*/
196
196
cached
197
- ItemNode getASuccessorFull ( string name ) {
197
+ ItemNode getASuccessor ( string name ) {
198
198
Stages:: PathResolutionStage:: ref ( ) and
199
199
result = this .getASuccessorRec ( name )
200
200
or
@@ -261,27 +261,6 @@ abstract class ItemNode extends Locatable {
261
261
item instanceof TypeParamItemNode
262
262
}
263
263
264
- pragma [ nomagic]
265
- private predicate hasSourceFunction ( string name ) {
266
- this .getASuccessorFull ( name ) .( Function ) .fromSource ( )
267
- }
268
-
269
- /** Gets a successor named `name` of this item, if any. */
270
- pragma [ nomagic]
271
- ItemNode getASuccessor ( string name ) {
272
- result = this .getASuccessorFull ( name ) and
273
- (
274
- // when a function exists in both source code and in library code, it is because
275
- // we also extracted the source code as library code, and hence we only want
276
- // the function from source code
277
- result .fromSource ( )
278
- or
279
- not result instanceof Function
280
- or
281
- not this .hasSourceFunction ( name )
282
- )
283
- }
284
-
285
264
/** Holds if this item has a canonical path belonging to the crate `c`. */
286
265
abstract predicate hasCanonicalPath ( Crate c ) ;
287
266
@@ -345,7 +324,7 @@ abstract private class ModuleLikeNode extends ItemNode {
345
324
private class SourceFileItemNode extends ModuleLikeNode , SourceFile {
346
325
pragma [ nomagic]
347
326
ModuleLikeNode getSuper ( ) {
348
- result = any ( ModuleItemNode mod | fileImport ( mod , this ) ) .getASuccessorFull ( "super" )
327
+ result = any ( ModuleItemNode mod | fileImport ( mod , this ) ) .getASuccessor ( "super" )
349
328
}
350
329
351
330
override string getName ( ) { result = "(source file)" }
@@ -393,7 +372,7 @@ class CrateItemNode extends ItemNode instanceof Crate {
393
372
predicate isPotentialDollarCrateTarget ( ) {
394
373
exists ( string name , RelevantPath p |
395
374
p .isDollarCrateQualifiedPath ( name ) and
396
- exists ( this .getASuccessorFull ( name ) )
375
+ exists ( this .getASuccessor ( name ) )
397
376
)
398
377
}
399
378
@@ -1245,8 +1224,8 @@ private predicate unqualifiedPathLookup(ItemNode encl, string name, Namespace ns
1245
1224
}
1246
1225
1247
1226
pragma [ nomagic]
1248
- private ItemNode getASuccessorFull ( ItemNode pred , string name , Namespace ns ) {
1249
- result = pred .getASuccessorFull ( name ) and
1227
+ private ItemNode getASuccessor ( ItemNode pred , string name , Namespace ns ) {
1228
+ result = pred .getASuccessor ( name ) and
1250
1229
ns = result .getNamespace ( )
1251
1230
}
1252
1231
@@ -1281,7 +1260,7 @@ private predicate keywordLookup(ItemNode encl, string name, RelevantPath p) {
1281
1260
pragma [ nomagic]
1282
1261
private ItemNode unqualifiedPathLookup ( RelevantPath p , Namespace ns ) {
1283
1262
exists ( ItemNode encl , string name |
1284
- result = getASuccessorFull ( encl , name , ns ) and not encl .excludedLocally ( name , result )
1263
+ result = getASuccessor ( encl , name , ns ) and not encl .excludedLocally ( name , result )
1285
1264
|
1286
1265
unqualifiedPathLookup ( encl , name , ns , p )
1287
1266
or
@@ -1306,7 +1285,7 @@ private ItemNode resolvePath0(RelevantPath path, Namespace ns) {
1306
1285
or
1307
1286
exists ( ItemNode q , string name |
1308
1287
q = resolvePathQualifier ( path , name ) and
1309
- result = getASuccessorFull ( q , name , ns ) and
1288
+ result = getASuccessor ( q , name , ns ) and
1310
1289
not q .excludedExternally ( name , result )
1311
1290
)
1312
1291
or
@@ -1383,12 +1362,12 @@ private ItemNode resolveUseTreeListItem(Use use, UseTree tree, RelevantPath path
1383
1362
mid = resolveUseTreeListItem ( use , midTree ) and
1384
1363
tree = midTree .getUseTreeList ( ) .getAUseTree ( ) and
1385
1364
isUseTreeSubPathUnqualified ( tree , path , pragma [ only_bind_into ] ( name ) ) and
1386
- result = mid .getASuccessorFull ( pragma [ only_bind_into ] ( name ) )
1365
+ result = mid .getASuccessor ( pragma [ only_bind_into ] ( name ) )
1387
1366
)
1388
1367
or
1389
1368
exists ( ItemNode q , string name |
1390
1369
q = resolveUseTreeListItemQualifier ( use , tree , path , name ) and
1391
- result = q .getASuccessorFull ( name )
1370
+ result = q .getASuccessor ( name )
1392
1371
)
1393
1372
}
1394
1373
@@ -1418,7 +1397,7 @@ private predicate useImportEdge(Use use, string name, ItemNode item) {
1418
1397
then
1419
1398
exists ( ItemNode encl , Namespace ns |
1420
1399
encl .getADescendant ( ) = use and
1421
- item = getASuccessorFull ( used , name , ns ) and
1400
+ item = getASuccessor ( used , name , ns ) and
1422
1401
// glob imports can be shadowed
1423
1402
not declares ( encl , ns , name ) and
1424
1403
not name = [ "super" , "self" , "Self" , "$crate" , "crate" ]
0 commit comments