Skip to content

Commit ef69a46

Browse files
committed
QL: Add variables to jump-to-def queries
1 parent 43ec1a7 commit ef69a46

5 files changed

Lines changed: 110 additions & 145 deletions

File tree

ql/src/codeql_ql/ast/Ast.qll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1181,6 +1181,8 @@ class VarAccess extends Identifier {
11811181

11821182
/** Gets the accessed variable. */
11831183
VarDecl getDeclaration() { result = decl }
1184+
1185+
override string getAPrimaryQlClass() { result = "VarAccess" }
11841186
}
11851187

11861188
/** A `not` formula. */
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import ql
2+
import codeql_ql.ast.internal.Module
3+
import codeql.IDEContextual
4+
5+
private newtype TLoc =
6+
TAst(AstNode n) or
7+
TFileOrModule(FileOrModule m)
8+
9+
class Loc extends TLoc {
10+
string toString() { result = "" }
11+
12+
AstNode asAst() { this = TAst(result) }
13+
14+
FileOrModule asMod() { this = TFileOrModule(result) }
15+
16+
File getFile() { this.hasLocationInfo(result.getAbsolutePath(), _, _, _, _) }
17+
18+
predicate hasLocationInfo(
19+
string filepath, int startline, int startcolumn, int endline, int endcolumn
20+
) {
21+
exists(AstNode n | this = TAst(n) |
22+
n.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
23+
)
24+
or
25+
exists(FileOrModule m | this = TFileOrModule(m) |
26+
m.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
27+
)
28+
}
29+
}
30+
31+
private predicate resolveModule(ModuleRef ref, FileOrModule target, string kind) {
32+
target = ref.getResolvedModule() and
33+
kind = "module"
34+
}
35+
36+
private predicate resolveType(TypeExpr ref, AstNode target, string kind) {
37+
target = ref.getResolvedType().getDeclaration() and
38+
kind = "type"
39+
}
40+
41+
private predicate resolvePredicate(PredicateExpr ref, Predicate target, string kind) {
42+
target = ref.getResolvedPredicate() and
43+
kind = "predicate"
44+
}
45+
46+
private predicate resolveVar(VarAccess va, VarDecl decl, string kind) {
47+
decl = va.getDeclaration() and
48+
kind = "variable"
49+
}
50+
51+
cached
52+
predicate resolve(Loc ref, Loc target, string kind) {
53+
resolveModule(ref.asAst(), target.asMod(), kind)
54+
or
55+
resolveType(ref.asAst(), target.asAst(), kind)
56+
or
57+
resolvePredicate(ref.asAst(), target.asAst(), kind)
58+
or
59+
resolveVar(ref.asAst(), target.asAst(), kind)
60+
}

ql/src/ide-contextual-queries/localDefinitions.ql

Lines changed: 4 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -8,62 +8,13 @@
88
*/
99

1010
import ql
11-
import codeql_ql.ast.internal.Module
12-
import codeql_ql.ast.internal.Type
11+
import Definitions
1312
import codeql.IDEContextual
1413

1514
external string selectedSourceFile();
1615

17-
newtype TLoc =
18-
TAst(AstNode n) or
19-
TFileOrModule(FileOrModule m)
20-
21-
class Loc extends TLoc {
22-
string toString() { result = "" }
23-
24-
AstNode asAst() { this = TAst(result) }
25-
26-
FileOrModule asMod() { this = TFileOrModule(result) }
27-
28-
predicate hasLocationInfo(
29-
string filepath, int startline, int startcolumn, int endline, int endcolumn
30-
) {
31-
exists(AstNode n | this = TAst(n) |
32-
n.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
33-
)
34-
or
35-
exists(FileOrModule m | this = TFileOrModule(m) |
36-
m.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
37-
)
38-
}
39-
}
40-
41-
predicate resolveModule(ModuleRef ref, FileOrModule target, string kind) {
42-
target = ref.getResolvedModule() and
43-
kind = "module" and
44-
ref.getLocation().getFile() = getFileBySourceArchiveName(selectedSourceFile())
45-
}
46-
47-
predicate resolveType(TypeExpr ref, AstNode target, string kind) {
48-
target = ref.getResolvedType().getDeclaration() and
49-
kind = "type" and
50-
ref.getLocation().getFile() = getFileBySourceArchiveName(selectedSourceFile())
51-
}
52-
53-
predicate resolvePredicate(PredicateExpr ref, Predicate target, string kind) {
54-
target = ref.getResolvedPredicate() and
55-
kind = "predicate" and
56-
ref.getLocation().getFile() = getFileBySourceArchiveName(selectedSourceFile())
57-
}
58-
59-
predicate resolve(Loc ref, Loc target, string kind) {
60-
resolveModule(ref.asAst(), target.asMod(), kind)
61-
or
62-
resolveType(ref.asAst(), target.asAst(), kind)
63-
or
64-
resolvePredicate(ref.asAst(), target.asAst(), kind)
65-
}
66-
6716
from Loc ref, Loc target, string kind
68-
where resolve(ref, target, kind)
17+
where
18+
resolve(ref, target, kind) and
19+
ref.getFile() = getFileBySourceArchiveName(selectedSourceFile())
6920
select ref, target, kind

ql/src/ide-contextual-queries/localReferences.ql

Lines changed: 4 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -8,61 +8,13 @@
88
*/
99

1010
import ql
11-
import codeql_ql.ast.internal.Module
11+
import Definitions
1212
import codeql.IDEContextual
1313

1414
external string selectedSourceFile();
1515

16-
newtype TLoc =
17-
TAst(AstNode n) or
18-
TFileOrModule(FileOrModule m)
19-
20-
class Loc extends TLoc {
21-
string toString() { result = "" }
22-
23-
AstNode asAst() { this = TAst(result) }
24-
25-
FileOrModule asMod() { this = TFileOrModule(result) }
26-
27-
predicate hasLocationInfo(
28-
string filepath, int startline, int startcolumn, int endline, int endcolumn
29-
) {
30-
exists(AstNode n | this = TAst(n) |
31-
n.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
32-
)
33-
or
34-
exists(FileOrModule m | this = TFileOrModule(m) |
35-
m.hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn)
36-
)
37-
}
38-
}
39-
40-
predicate resolveModule(ModuleRef ref, FileOrModule target, string kind) {
41-
target = ref.getResolvedModule() and
42-
kind = "module" and
43-
ref.getLocation().getFile() = getFileBySourceArchiveName(selectedSourceFile())
44-
}
45-
46-
predicate resolveType(TypeExpr ref, AstNode target, string kind) {
47-
target = ref.getResolvedType().getDeclaration() and
48-
kind = "type" and
49-
ref.getLocation().getFile() = getFileBySourceArchiveName(selectedSourceFile())
50-
}
51-
52-
predicate resolvePredicate(PredicateExpr ref, Predicate target, string kind) {
53-
target = ref.getResolvedPredicate() and
54-
kind = "predicate" and
55-
ref.getLocation().getFile() = getFileBySourceArchiveName(selectedSourceFile())
56-
}
57-
58-
predicate resolve(Loc ref, Loc target, string kind) {
59-
resolveModule(ref.asAst(), target.asMod(), kind)
60-
or
61-
resolveType(ref.asAst(), target.asAst(), kind)
62-
or
63-
resolvePredicate(ref.asAst(), target.asAst(), kind)
64-
}
65-
6616
from Loc ref, Loc target, string kind
67-
where resolve(ref, target, kind)
17+
where
18+
resolve(ref, target, kind) and
19+
target.getFile() = getFileBySourceArchiveName(selectedSourceFile())
6820
select ref, target, kind

ql/test/printAst/printAst.expected

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ nodes
3535
| Foo.qll:9:21:9:23 | TypeExpr | semmle.order | 17 |
3636
| Foo.qll:9:21:9:25 | VarDecl | semmle.label | [VarDecl] VarDecl |
3737
| Foo.qll:9:21:9:25 | VarDecl | semmle.order | 17 |
38-
| Foo.qll:10:3:10:3 | Identifier | semmle.label | [Identifier] Identifier |
39-
| Foo.qll:10:3:10:3 | Identifier | semmle.order | 19 |
38+
| Foo.qll:10:3:10:3 | VarAccess | semmle.label | [VarAccess] VarAccess |
39+
| Foo.qll:10:3:10:3 | VarAccess | semmle.order | 19 |
4040
| Foo.qll:10:3:10:85 | ComparisonFormula | semmle.label | [ComparisonFormula] ComparisonFormula |
4141
| Foo.qll:10:3:10:85 | ComparisonFormula | semmle.order | 19 |
4242
| Foo.qll:10:5:10:5 | ComparisonOp | semmle.label | [ComparisonOp] ComparisonOp |
@@ -49,8 +49,8 @@ nodes
4949
| Foo.qll:10:15:10:17 | TypeExpr | semmle.order | 24 |
5050
| Foo.qll:10:15:10:23 | VarDecl | semmle.label | [VarDecl] VarDecl |
5151
| Foo.qll:10:15:10:23 | VarDecl | semmle.order | 24 |
52-
| Foo.qll:10:27:10:31 | Identifier | semmle.label | [Identifier] Identifier |
53-
| Foo.qll:10:27:10:31 | Identifier | semmle.order | 26 |
52+
| Foo.qll:10:27:10:31 | VarAccess | semmle.label | [VarAccess] VarAccess |
53+
| Foo.qll:10:27:10:31 | VarAccess | semmle.order | 26 |
5454
| Foo.qll:10:27:10:42 | MemberCall | semmle.label | [MemberCall] MemberCall |
5555
| Foo.qll:10:27:10:42 | MemberCall | semmle.order | 26 |
5656
| Foo.qll:10:27:10:50 | ComparisonFormula | semmle.label | [ComparisonFormula] ComparisonFormula |
@@ -61,10 +61,10 @@ nodes
6161
| Foo.qll:10:46:10:50 | String | semmle.order | 30 |
6262
| Foo.qll:10:54:10:58 | AsExpr | semmle.label | [AsExpr] AsExpr |
6363
| Foo.qll:10:54:10:58 | AsExpr | semmle.order | 31 |
64-
| Foo.qll:10:54:10:58 | Identifier | semmle.label | [Identifier] Identifier |
65-
| Foo.qll:10:54:10:58 | Identifier | semmle.order | 31 |
66-
| Foo.qll:10:69:10:73 | Identifier | semmle.label | [Identifier] Identifier |
67-
| Foo.qll:10:69:10:73 | Identifier | semmle.order | 33 |
64+
| Foo.qll:10:54:10:58 | VarAccess | semmle.label | [VarAccess] VarAccess |
65+
| Foo.qll:10:54:10:58 | VarAccess | semmle.order | 31 |
66+
| Foo.qll:10:69:10:73 | VarAccess | semmle.label | [VarAccess] VarAccess |
67+
| Foo.qll:10:69:10:73 | VarAccess | semmle.order | 33 |
6868
| Foo.qll:10:69:10:84 | MemberCall | semmle.label | [MemberCall] MemberCall |
6969
| Foo.qll:10:69:10:84 | MemberCall | semmle.order | 33 |
7070
| Foo.qll:13:1:25:1 | ClasslessPredicate | semmle.label | [ClasslessPredicate] ClasslessPredicate |
@@ -85,16 +85,16 @@ nodes
8585
| Foo.qll:14:3:22:16 | Disjunction | semmle.order | 38 |
8686
| Foo.qll:14:3:24:23 | Disjunction | semmle.label | [Disjunction] Disjunction |
8787
| Foo.qll:14:3:24:23 | Disjunction | semmle.order | 38 |
88-
| Foo.qll:14:9:14:9 | Identifier | semmle.label | [Identifier] Identifier |
89-
| Foo.qll:14:9:14:9 | Identifier | semmle.order | 44 |
88+
| Foo.qll:14:9:14:9 | VarAccess | semmle.label | [VarAccess] VarAccess |
89+
| Foo.qll:14:9:14:9 | VarAccess | semmle.order | 44 |
9090
| Foo.qll:16:3:16:7 | String | semmle.label | [String] String |
9191
| Foo.qll:16:3:16:7 | String | semmle.order | 45 |
9292
| Foo.qll:16:3:16:29 | ComparisonFormula | semmle.label | [ComparisonFormula] ComparisonFormula |
9393
| Foo.qll:16:3:16:29 | ComparisonFormula | semmle.order | 45 |
9494
| Foo.qll:16:9:16:9 | ComparisonOp | semmle.label | [ComparisonOp] ComparisonOp |
9595
| Foo.qll:16:9:16:9 | ComparisonOp | semmle.order | 47 |
96-
| Foo.qll:16:11:16:11 | Identifier | semmle.label | [Identifier] Identifier |
97-
| Foo.qll:16:11:16:11 | Identifier | semmle.order | 48 |
96+
| Foo.qll:16:11:16:11 | VarAccess | semmle.label | [VarAccess] VarAccess |
97+
| Foo.qll:16:11:16:11 | VarAccess | semmle.order | 48 |
9898
| Foo.qll:16:11:16:29 | MemberCall | semmle.label | [MemberCall] MemberCall |
9999
| Foo.qll:16:11:16:29 | MemberCall | semmle.order | 48 |
100100
| Foo.qll:16:22:16:22 | Integer | semmle.label | [Integer] Integer |
@@ -103,8 +103,8 @@ nodes
103103
| Foo.qll:16:25:16:25 | Integer | semmle.order | 51 |
104104
| Foo.qll:16:28:16:28 | Integer | semmle.label | [Integer] Integer |
105105
| Foo.qll:16:28:16:28 | Integer | semmle.order | 52 |
106-
| Foo.qll:18:3:18:3 | Identifier | semmle.label | [Identifier] Identifier |
107-
| Foo.qll:18:3:18:3 | Identifier | semmle.order | 53 |
106+
| Foo.qll:18:3:18:3 | VarAccess | semmle.label | [VarAccess] VarAccess |
107+
| Foo.qll:18:3:18:3 | VarAccess | semmle.order | 53 |
108108
| Foo.qll:18:3:18:9 | InlineCast | semmle.label | [InlineCast] InlineCast |
109109
| Foo.qll:18:3:18:9 | InlineCast | semmle.order | 53 |
110110
| Foo.qll:18:3:18:20 | MemberCall | semmle.label | [MemberCall] MemberCall |
@@ -117,8 +117,8 @@ nodes
117117
| Foo.qll:18:22:18:22 | ComparisonOp | semmle.order | 58 |
118118
| Foo.qll:18:24:18:28 | String | semmle.label | [String] String |
119119
| Foo.qll:18:24:18:28 | String | semmle.order | 59 |
120-
| Foo.qll:20:3:20:3 | Identifier | semmle.label | [Identifier] Identifier |
121-
| Foo.qll:20:3:20:3 | Identifier | semmle.order | 60 |
120+
| Foo.qll:20:3:20:3 | VarAccess | semmle.label | [VarAccess] VarAccess |
121+
| Foo.qll:20:3:20:3 | VarAccess | semmle.order | 60 |
122122
| Foo.qll:20:3:20:9 | InlineCast | semmle.label | [InlineCast] InlineCast |
123123
| Foo.qll:20:3:20:9 | InlineCast | semmle.order | 60 |
124124
| Foo.qll:20:3:20:13 | ComparisonFormula | semmle.label | [ComparisonFormula] ComparisonFormula |
@@ -127,10 +127,10 @@ nodes
127127
| Foo.qll:20:6:20:8 | TypeExpr | semmle.order | 63 |
128128
| Foo.qll:20:11:20:11 | ComparisonOp | semmle.label | [ComparisonOp] ComparisonOp |
129129
| Foo.qll:20:11:20:11 | ComparisonOp | semmle.order | 64 |
130-
| Foo.qll:20:13:20:13 | Identifier | semmle.label | [Identifier] Identifier |
131-
| Foo.qll:20:13:20:13 | Identifier | semmle.order | 65 |
132-
| Foo.qll:22:3:22:3 | Identifier | semmle.label | [Identifier] Identifier |
133-
| Foo.qll:22:3:22:3 | Identifier | semmle.order | 66 |
130+
| Foo.qll:20:13:20:13 | VarAccess | semmle.label | [VarAccess] VarAccess |
131+
| Foo.qll:20:13:20:13 | VarAccess | semmle.order | 65 |
132+
| Foo.qll:22:3:22:3 | VarAccess | semmle.label | [VarAccess] VarAccess |
133+
| Foo.qll:22:3:22:3 | VarAccess | semmle.order | 66 |
134134
| Foo.qll:22:3:22:16 | ComparisonFormula | semmle.label | [ComparisonFormula] ComparisonFormula |
135135
| Foo.qll:22:3:22:16 | ComparisonFormula | semmle.order | 66 |
136136
| Foo.qll:22:5:22:5 | ComparisonOp | semmle.label | [ComparisonOp] ComparisonOp |
@@ -204,8 +204,8 @@ edges
204204
| Foo.qll:9:7:11:1 | ClasslessPredicate | Foo.qll:10:3:10:85 | ComparisonFormula | semmle.order | 19 |
205205
| Foo.qll:9:21:9:25 | VarDecl | Foo.qll:9:21:9:23 | TypeExpr | semmle.label | 1 |
206206
| Foo.qll:9:21:9:25 | VarDecl | Foo.qll:9:21:9:23 | TypeExpr | semmle.order | 17 |
207-
| Foo.qll:10:3:10:85 | ComparisonFormula | Foo.qll:10:3:10:3 | Identifier | semmle.label | 1 |
208-
| Foo.qll:10:3:10:85 | ComparisonFormula | Foo.qll:10:3:10:3 | Identifier | semmle.order | 19 |
207+
| Foo.qll:10:3:10:85 | ComparisonFormula | Foo.qll:10:3:10:3 | VarAccess | semmle.label | 1 |
208+
| Foo.qll:10:3:10:85 | ComparisonFormula | Foo.qll:10:3:10:3 | VarAccess | semmle.order | 19 |
209209
| Foo.qll:10:3:10:85 | ComparisonFormula | Foo.qll:10:5:10:5 | ComparisonOp | semmle.label | 2 |
210210
| Foo.qll:10:3:10:85 | ComparisonFormula | Foo.qll:10:5:10:5 | ComparisonOp | semmle.order | 21 |
211211
| Foo.qll:10:3:10:85 | ComparisonFormula | Foo.qll:10:7:10:85 | Rank | semmle.label | 3 |
@@ -222,26 +222,26 @@ edges
222222
| Foo.qll:10:7:10:85 | Rank | Foo.qll:10:69:10:84 | MemberCall | semmle.order | 33 |
223223
| Foo.qll:10:15:10:23 | VarDecl | Foo.qll:10:15:10:17 | TypeExpr | semmle.label | 1 |
224224
| Foo.qll:10:15:10:23 | VarDecl | Foo.qll:10:15:10:17 | TypeExpr | semmle.order | 24 |
225-
| Foo.qll:10:27:10:42 | MemberCall | Foo.qll:10:27:10:31 | Identifier | semmle.label | 1 |
226-
| Foo.qll:10:27:10:42 | MemberCall | Foo.qll:10:27:10:31 | Identifier | semmle.order | 26 |
225+
| Foo.qll:10:27:10:42 | MemberCall | Foo.qll:10:27:10:31 | VarAccess | semmle.label | 1 |
226+
| Foo.qll:10:27:10:42 | MemberCall | Foo.qll:10:27:10:31 | VarAccess | semmle.order | 26 |
227227
| Foo.qll:10:27:10:50 | ComparisonFormula | Foo.qll:10:27:10:42 | MemberCall | semmle.label | 1 |
228228
| Foo.qll:10:27:10:50 | ComparisonFormula | Foo.qll:10:27:10:42 | MemberCall | semmle.order | 26 |
229229
| Foo.qll:10:27:10:50 | ComparisonFormula | Foo.qll:10:44:10:44 | ComparisonOp | semmle.label | 2 |
230230
| Foo.qll:10:27:10:50 | ComparisonFormula | Foo.qll:10:44:10:44 | ComparisonOp | semmle.order | 29 |
231231
| Foo.qll:10:27:10:50 | ComparisonFormula | Foo.qll:10:46:10:50 | String | semmle.label | 3 |
232232
| Foo.qll:10:27:10:50 | ComparisonFormula | Foo.qll:10:46:10:50 | String | semmle.order | 30 |
233-
| Foo.qll:10:54:10:58 | AsExpr | Foo.qll:10:54:10:58 | Identifier | semmle.label | 1 |
234-
| Foo.qll:10:54:10:58 | AsExpr | Foo.qll:10:54:10:58 | Identifier | semmle.order | 31 |
235-
| Foo.qll:10:69:10:84 | MemberCall | Foo.qll:10:69:10:73 | Identifier | semmle.label | 1 |
236-
| Foo.qll:10:69:10:84 | MemberCall | Foo.qll:10:69:10:73 | Identifier | semmle.order | 33 |
233+
| Foo.qll:10:54:10:58 | AsExpr | Foo.qll:10:54:10:58 | VarAccess | semmle.label | 1 |
234+
| Foo.qll:10:54:10:58 | AsExpr | Foo.qll:10:54:10:58 | VarAccess | semmle.order | 31 |
235+
| Foo.qll:10:69:10:84 | MemberCall | Foo.qll:10:69:10:73 | VarAccess | semmle.label | 1 |
236+
| Foo.qll:10:69:10:84 | MemberCall | Foo.qll:10:69:10:73 | VarAccess | semmle.order | 33 |
237237
| Foo.qll:13:1:25:1 | ClasslessPredicate | Foo.qll:13:17:13:21 | VarDecl | semmle.label | 1 |
238238
| Foo.qll:13:1:25:1 | ClasslessPredicate | Foo.qll:13:17:13:21 | VarDecl | semmle.order | 36 |
239239
| Foo.qll:13:1:25:1 | ClasslessPredicate | Foo.qll:14:3:24:23 | Disjunction | semmle.label | 2 |
240240
| Foo.qll:13:1:25:1 | ClasslessPredicate | Foo.qll:14:3:24:23 | Disjunction | semmle.order | 38 |
241241
| Foo.qll:13:17:13:21 | VarDecl | Foo.qll:13:17:13:19 | TypeExpr | semmle.label | 1 |
242242
| Foo.qll:13:17:13:21 | VarDecl | Foo.qll:13:17:13:19 | TypeExpr | semmle.order | 36 |
243-
| Foo.qll:14:3:14:10 | PredicateCall | Foo.qll:14:9:14:9 | Identifier | semmle.label | 1 |
244-
| Foo.qll:14:3:14:10 | PredicateCall | Foo.qll:14:9:14:9 | Identifier | semmle.order | 44 |
243+
| Foo.qll:14:3:14:10 | PredicateCall | Foo.qll:14:9:14:9 | VarAccess | semmle.label | 1 |
244+
| Foo.qll:14:3:14:10 | PredicateCall | Foo.qll:14:9:14:9 | VarAccess | semmle.order | 44 |
245245
| Foo.qll:14:3:16:29 | Disjunction | Foo.qll:14:3:14:10 | PredicateCall | semmle.label | 1 |
246246
| Foo.qll:14:3:16:29 | Disjunction | Foo.qll:14:3:14:10 | PredicateCall | semmle.order | 38 |
247247
| Foo.qll:14:3:16:29 | Disjunction | Foo.qll:16:3:16:29 | ComparisonFormula | semmle.label | 2 |
@@ -268,16 +268,16 @@ edges
268268
| Foo.qll:16:3:16:29 | ComparisonFormula | Foo.qll:16:9:16:9 | ComparisonOp | semmle.order | 47 |
269269
| Foo.qll:16:3:16:29 | ComparisonFormula | Foo.qll:16:11:16:29 | MemberCall | semmle.label | 3 |
270270
| Foo.qll:16:3:16:29 | ComparisonFormula | Foo.qll:16:11:16:29 | MemberCall | semmle.order | 48 |
271-
| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:11:16:11 | Identifier | semmle.label | 1 |
272-
| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:11:16:11 | Identifier | semmle.order | 48 |
271+
| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:11:16:11 | VarAccess | semmle.label | 1 |
272+
| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:11:16:11 | VarAccess | semmle.order | 48 |
273273
| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:22:16:22 | Integer | semmle.label | 2 |
274274
| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:22:16:22 | Integer | semmle.order | 50 |
275275
| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:25:16:25 | Integer | semmle.label | 3 |
276276
| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:25:16:25 | Integer | semmle.order | 51 |
277277
| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:28:16:28 | Integer | semmle.label | 4 |
278278
| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:28:16:28 | Integer | semmle.order | 52 |
279-
| Foo.qll:18:3:18:9 | InlineCast | Foo.qll:18:3:18:3 | Identifier | semmle.label | 1 |
280-
| Foo.qll:18:3:18:9 | InlineCast | Foo.qll:18:3:18:3 | Identifier | semmle.order | 53 |
279+
| Foo.qll:18:3:18:9 | InlineCast | Foo.qll:18:3:18:3 | VarAccess | semmle.label | 1 |
280+
| Foo.qll:18:3:18:9 | InlineCast | Foo.qll:18:3:18:3 | VarAccess | semmle.order | 53 |
281281
| Foo.qll:18:3:18:9 | InlineCast | Foo.qll:18:6:18:8 | TypeExpr | semmle.label | 2 |
282282
| Foo.qll:18:3:18:9 | InlineCast | Foo.qll:18:6:18:8 | TypeExpr | semmle.order | 57 |
283283
| Foo.qll:18:3:18:20 | MemberCall | Foo.qll:18:3:18:9 | InlineCast | semmle.label | 1 |
@@ -288,18 +288,18 @@ edges
288288
| Foo.qll:18:3:18:28 | ComparisonFormula | Foo.qll:18:22:18:22 | ComparisonOp | semmle.order | 58 |
289289
| Foo.qll:18:3:18:28 | ComparisonFormula | Foo.qll:18:24:18:28 | String | semmle.label | 3 |
290290
| Foo.qll:18:3:18:28 | ComparisonFormula | Foo.qll:18:24:18:28 | String | semmle.order | 59 |
291-
| Foo.qll:20:3:20:9 | InlineCast | Foo.qll:20:3:20:3 | Identifier | semmle.label | 1 |
292-
| Foo.qll:20:3:20:9 | InlineCast | Foo.qll:20:3:20:3 | Identifier | semmle.order | 60 |
291+
| Foo.qll:20:3:20:9 | InlineCast | Foo.qll:20:3:20:3 | VarAccess | semmle.label | 1 |
292+
| Foo.qll:20:3:20:9 | InlineCast | Foo.qll:20:3:20:3 | VarAccess | semmle.order | 60 |
293293
| Foo.qll:20:3:20:9 | InlineCast | Foo.qll:20:6:20:8 | TypeExpr | semmle.label | 2 |
294294
| Foo.qll:20:3:20:9 | InlineCast | Foo.qll:20:6:20:8 | TypeExpr | semmle.order | 63 |
295295
| Foo.qll:20:3:20:13 | ComparisonFormula | Foo.qll:20:3:20:9 | InlineCast | semmle.label | 1 |
296296
| Foo.qll:20:3:20:13 | ComparisonFormula | Foo.qll:20:3:20:9 | InlineCast | semmle.order | 60 |
297297
| Foo.qll:20:3:20:13 | ComparisonFormula | Foo.qll:20:11:20:11 | ComparisonOp | semmle.label | 2 |
298298
| Foo.qll:20:3:20:13 | ComparisonFormula | Foo.qll:20:11:20:11 | ComparisonOp | semmle.order | 64 |
299-
| Foo.qll:20:3:20:13 | ComparisonFormula | Foo.qll:20:13:20:13 | Identifier | semmle.label | 3 |
300-
| Foo.qll:20:3:20:13 | ComparisonFormula | Foo.qll:20:13:20:13 | Identifier | semmle.order | 65 |
301-
| Foo.qll:22:3:22:16 | ComparisonFormula | Foo.qll:22:3:22:3 | Identifier | semmle.label | 1 |
302-
| Foo.qll:22:3:22:16 | ComparisonFormula | Foo.qll:22:3:22:3 | Identifier | semmle.order | 66 |
299+
| Foo.qll:20:3:20:13 | ComparisonFormula | Foo.qll:20:13:20:13 | VarAccess | semmle.label | 3 |
300+
| Foo.qll:20:3:20:13 | ComparisonFormula | Foo.qll:20:13:20:13 | VarAccess | semmle.order | 65 |
301+
| Foo.qll:22:3:22:16 | ComparisonFormula | Foo.qll:22:3:22:3 | VarAccess | semmle.label | 1 |
302+
| Foo.qll:22:3:22:16 | ComparisonFormula | Foo.qll:22:3:22:3 | VarAccess | semmle.order | 66 |
303303
| Foo.qll:22:3:22:16 | ComparisonFormula | Foo.qll:22:5:22:5 | ComparisonOp | semmle.label | 2 |
304304
| Foo.qll:22:3:22:16 | ComparisonFormula | Foo.qll:22:5:22:5 | ComparisonOp | semmle.order | 68 |
305305
| Foo.qll:22:3:22:16 | ComparisonFormula | Foo.qll:22:7:22:16 | Aggregate[any] | semmle.label | 3 |

0 commit comments

Comments
 (0)