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) {
3929query 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
4741query 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
5552query 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}
0 commit comments