1
1
/**
2
2
* @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.
4
4
* @id rust/diagnostics/missing-elements
5
5
*/
6
6
@@ -16,16 +16,6 @@ Location getUnimplementedLocation(Unimplemented node) {
16
16
result instanceof EmptyLocation
17
17
}
18
18
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
-
29
19
/**
30
20
* Gets a string along the lines of " (x2)", corresponding to the number `i`. For `i = 1`, the result is the empty string.
31
21
*/
@@ -39,23 +29,33 @@ string multipleString(int i) {
39
29
query predicate listUnimplemented ( string location , string msg ) {
40
30
// something that is not extracted yet
41
31
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
43
37
msg = "Not yet implemented" + multipleString ( c ) + "."
44
38
)
45
39
}
46
40
47
41
query predicate listMissingExpr ( string location , string msg ) {
48
42
// gaps in the AST due to parse errors
49
43
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
51
48
msg = "Missing expression" + multipleString ( c ) + "."
52
49
)
53
50
}
54
51
55
52
query predicate listMissingPat ( string location , string msg ) {
56
53
// gaps in the AST due to parse errors
57
54
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
59
59
msg = "Missing pattern" + multipleString ( c ) + "."
60
60
)
61
61
}
0 commit comments