@@ -194,21 +194,11 @@ abstract class ItemNode extends Locatable {
194
194
this = result .( ImplOrTraitItemNode ) .getAnItemInSelfScope ( )
195
195
or
196
196
name = "crate" and
197
- result =
198
- any ( CrateItemNode crate |
199
- this = crate .getASourceFile ( )
200
- or
201
- this = crate .getModuleNode ( )
202
- )
197
+ this = result .( CrateItemNode ) .getARootModuleNode ( )
203
198
or
204
199
// todo: implement properly
205
200
name = "$crate" and
206
- result =
207
- any ( CrateItemNode crate |
208
- this = crate .getASourceFile ( )
209
- or
210
- this = crate .getModuleNode ( )
211
- ) .( Crate ) .getADependency * ( ) and
201
+ result = any ( CrateItemNode crate | this = crate .getARootModuleNode ( ) ) .( Crate ) .getADependency * ( ) and
212
202
result .( CrateItemNode ) .isPotentialDollarCrateTarget ( )
213
203
}
214
204
@@ -237,7 +227,7 @@ abstract private class ModuleLikeNode extends ItemNode {
237
227
predicate isRoot ( ) {
238
228
this instanceof SourceFileItemNode
239
229
or
240
- this = any ( CrateItemNode c ) .getModuleNode ( )
230
+ this = any ( Crate c ) .getModule ( )
241
231
}
242
232
}
243
233
@@ -294,6 +284,15 @@ class CrateItemNode extends ItemNode instanceof Crate {
294
284
)
295
285
}
296
286
287
+ /**
288
+ * Gets a root module node belonging to this crate.
289
+ */
290
+ ModuleLikeNode getARootModuleNode ( ) {
291
+ result = this .getASourceFile ( )
292
+ or
293
+ result = super .getModule ( )
294
+ }
295
+
297
296
pragma [ nomagic]
298
297
predicate isPotentialDollarCrateTarget ( ) {
299
298
exists ( string name , RelevantPath p |
0 commit comments