mirror of
https://github.com/github/codeql.git
synced 2026-04-22 15:25:18 +02:00
Rust: Minor path resolution fix for ($)crate paths
This commit is contained in:
@@ -194,21 +194,11 @@ abstract class ItemNode extends Locatable {
|
||||
this = result.(ImplOrTraitItemNode).getAnItemInSelfScope()
|
||||
or
|
||||
name = "crate" and
|
||||
result =
|
||||
any(CrateItemNode crate |
|
||||
this = crate.getASourceFile()
|
||||
or
|
||||
this = crate.getModuleNode()
|
||||
)
|
||||
this = result.(CrateItemNode).getARootModuleNode()
|
||||
or
|
||||
// todo: implement properly
|
||||
name = "$crate" and
|
||||
result =
|
||||
any(CrateItemNode crate |
|
||||
this = crate.getASourceFile()
|
||||
or
|
||||
this = crate.getModuleNode()
|
||||
).(Crate).getADependency*() and
|
||||
result = any(CrateItemNode crate | this = crate.getARootModuleNode()).(Crate).getADependency*() and
|
||||
result.(CrateItemNode).isPotentialDollarCrateTarget()
|
||||
}
|
||||
|
||||
@@ -237,7 +227,7 @@ abstract private class ModuleLikeNode extends ItemNode {
|
||||
predicate isRoot() {
|
||||
this instanceof SourceFileItemNode
|
||||
or
|
||||
this = any(CrateItemNode c).getModuleNode()
|
||||
this = any(Crate c).getModule()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -294,6 +284,15 @@ class CrateItemNode extends ItemNode instanceof Crate {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a root module node belonging to this crate.
|
||||
*/
|
||||
ModuleLikeNode getARootModuleNode() {
|
||||
result = this.getASourceFile()
|
||||
or
|
||||
result = super.getModule()
|
||||
}
|
||||
|
||||
pragma[nomagic]
|
||||
predicate isPotentialDollarCrateTarget() {
|
||||
exists(string name, RelevantPath p |
|
||||
|
||||
Reference in New Issue
Block a user