Skip to content

Commit ca5cc8e

Browse files
authored
Merge pull request #19220 from hvitved/rust/path-resolution-crate-fix
Rust: Minor path resolution fix for `($)crate` paths
2 parents 3441af1 + 8b6c8d7 commit ca5cc8e

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

Diff for: rust/ql/lib/codeql/rust/internal/PathResolution.qll

+12-13
Original file line numberDiff line numberDiff line change
@@ -194,21 +194,11 @@ abstract class ItemNode extends Locatable {
194194
this = result.(ImplOrTraitItemNode).getAnItemInSelfScope()
195195
or
196196
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()
203198
or
204199
// todo: implement properly
205200
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
212202
result.(CrateItemNode).isPotentialDollarCrateTarget()
213203
}
214204

@@ -237,7 +227,7 @@ abstract private class ModuleLikeNode extends ItemNode {
237227
predicate isRoot() {
238228
this instanceof SourceFileItemNode
239229
or
240-
this = any(CrateItemNode c).getModuleNode()
230+
this = any(Crate c).getModule()
241231
}
242232
}
243233

@@ -294,6 +284,15 @@ class CrateItemNode extends ItemNode instanceof Crate {
294284
)
295285
}
296286

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+
297296
pragma[nomagic]
298297
predicate isPotentialDollarCrateTarget() {
299298
exists(string name, RelevantPath p |

0 commit comments

Comments
 (0)