Skip to content

Commit aed44ba

Browse files
committed
Rust: Restrict the query to user code.
1 parent fb6fbf6 commit aed44ba

File tree

2 files changed

+14
-15
lines changed

2 files changed

+14
-15
lines changed
Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* @name Missing Elements
3-
* @description List all elements that weren't extracted due to unimplemented features or parse errors.
3+
* @description List all elements in the source code directory that weren't extracted due to unimplemented features or parse errors.
44
* @id rust/diagnostics/missing-elements
55
*/
66

@@ -16,16 +16,6 @@ Location getUnimplementedLocation(Unimplemented node) {
1616
result instanceof EmptyLocation
1717
}
1818

19-
/**
20-
* Gets `l.toString()`, but with any locations outside of the source location prefix cleaned up.
21-
*/
22-
bindingset[l]
23-
string cleanLocationString(Location l) {
24-
if exists(l.getFile().getRelativePath()) or l instanceof EmptyLocation
25-
then result = l.toString()
26-
else l.getFile().getParentContainer().getAbsolutePath() + result = l.toString() // remove the directory from the string
27-
}
28-
2919
/**
3020
* Gets a string along the lines of " (x2)", corresponding to the number `i`. For `i = 1`, the result is the empty string.
3121
*/
@@ -39,23 +29,33 @@ string multipleString(int i) {
3929
query predicate listUnimplemented(string location, string msg) {
4030
// something that is not extracted yet
4131
exists(int c |
42-
c = strictcount(Unimplemented n | cleanLocationString(getUnimplementedLocation(n)) = location) and
32+
c =
33+
strictcount(Unimplemented n |
34+
exists(getUnimplementedLocation(n).getFile().getRelativePath()) and
35+
getUnimplementedLocation(n).toString() = location
36+
) and
4337
msg = "Not yet implemented" + multipleString(c) + "."
4438
)
4539
}
4640

4741
query predicate listMissingExpr(string location, string msg) {
4842
// gaps in the AST due to parse errors
4943
exists(int c |
50-
c = strictcount(MissingExpr e | cleanLocationString(e.getLocation()) = location) and
44+
c =
45+
strictcount(MissingExpr e |
46+
exists(e.getFile().getRelativePath()) and e.getLocation().toString() = location
47+
) and
5148
msg = "Missing expression" + multipleString(c) + "."
5249
)
5350
}
5451

5552
query predicate listMissingPat(string location, string msg) {
5653
// gaps in the AST due to parse errors
5754
exists(int c |
58-
c = strictcount(MissingPat p | cleanLocationString(p.getLocation()) = location) and
55+
c =
56+
strictcount(MissingPat p |
57+
exists(p.getFile().getRelativePath()) and p.getLocation().toString() = location
58+
) and
5959
msg = "Missing pattern" + multipleString(c) + "."
6060
)
6161
}

rust/ql/test/query-tests/diagnostics/MissingElements.expected

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
listUnimplemented
2-
| @0:0:0:0 | Not yet implemented (x20). |
32
| does_not_compile.rs@2:2:2:5 | Not yet implemented. |
43
| does_not_compile.rs@2:7:2:8 | Not yet implemented. |
54
| does_not_compile.rs@2:10:2:12 | Not yet implemented. |

0 commit comments

Comments
 (0)