Skip to content

Commit 800e96a

Browse files
committed
Rust: Remove Resolvable.resolvesAsItem
Removes one more use of extractor-based resolution.
1 parent 0a18db8 commit 800e96a

File tree

4 files changed

+20
-20
lines changed

4 files changed

+20
-20
lines changed

rust/ql/.generated.list

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/ql/.gitattributes

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/ql/lib/codeql/rust/elements/internal/ResolvableImpl.qll

Lines changed: 2 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/ql/src/queries/telemetry/RustAnalyzerComparison.qll

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,20 @@
77

88
import rust
99

10+
/**
11+
* Holds if this resolvable and the item `i` resolves to the same canonical
12+
* path in the same crate
13+
*/
14+
pragma[nomagic]
15+
private predicate resolvesAsItem(Resolvable r, Item i) {
16+
r.getResolvedPath() = i.getExtendedCanonicalPath() and
17+
(
18+
r.getResolvedCrateOrigin() = i.getCrateOrigin()
19+
or
20+
not r.hasResolvedCrateOrigin() and not i.hasCrateOrigin()
21+
)
22+
}
23+
1024
private signature module ResolvableSig {
1125
class Source {
1226
string toString();
@@ -94,7 +108,7 @@ private module PathResolution implements ResolvableSig {
94108
private module RustAnalyzerPathResolution implements CompareSig<PathResolution> {
95109
predicate isResolvable(PathResolution::Source s) { s.hasResolvedPath() }
96110

97-
Item resolve(PathResolution::Source s) { s.resolvesAsItem(result) }
111+
Item resolve(PathResolution::Source s) { resolvesAsItem(s, result) }
98112
}
99113

100114
private module QlPathResolution implements CompareSig<PathResolution> {
@@ -133,7 +147,7 @@ private module RustAnalyzerCallGraph implements CompareSig<CallGraph> {
133147
CallExprBaseImpl::getCallResolvable(c).hasResolvedPath()
134148
}
135149

136-
Item resolve(CallExprBase c) { CallExprBaseImpl::getCallResolvable(c).resolvesAsItem(result) }
150+
Item resolve(CallExprBase c) { resolvesAsItem(CallExprBaseImpl::getCallResolvable(c), result) }
137151
}
138152

139153
private module QlCallGraph implements CompareSig<CallGraph> {

0 commit comments

Comments
 (0)