From be495b28dadabb1ba17b3f21fdca7a0dfbda7989 Mon Sep 17 00:00:00 2001 From: Erik Krogh Kristensen Date: Thu, 27 May 2021 10:12:03 +0000 Subject: [PATCH 1/3] add cases to the getParent relation --- ql/src/codeql_ql/ast/Ast.qll | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/ql/src/codeql_ql/ast/Ast.qll b/ql/src/codeql_ql/ast/Ast.qll index c8c5c321ec4..a4657f539da 100644 --- a/ql/src/codeql_ql/ast/Ast.qll +++ b/ql/src/codeql_ql/ast/Ast.qll @@ -176,6 +176,12 @@ class Type extends TType, AstNode { * E.g. `DataFlow` in `DataFlow::Node`. */ ModuleExpr getModule() { toGenerated(result) = type.getChild() } + + override AstNode getParent() { + result = super.getParent() + or + result.(InlineCast).getType() = this + } } /** @@ -707,7 +713,15 @@ class Negation extends TNegation, Formula { } /** An expression, such as `x+4`. */ -class Expr extends TExpr, AstNode { } +class Expr extends TExpr, AstNode { + override AstNode getParent() { + result = super.getParent() + or + result.(Call).getArgument(_) = this + or + result.(Aggregate).getOrderBy(_) = this + } +} /** A function symbol, such as `+` or `*`. */ class FunctionSymbol extends string { From 4921b6cf56e65f060fe1710f916574476a6cb92d Mon Sep 17 00:00:00 2001 From: Erik Krogh Kristensen Date: Thu, 27 May 2021 10:13:33 +0000 Subject: [PATCH 2/3] switch to having the pretty AST by default in printAst --- ql/src/ide-contextual-queries/printAst.ql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ql/src/ide-contextual-queries/printAst.ql b/ql/src/ide-contextual-queries/printAst.ql index ddffb099796..1fd07db49d5 100644 --- a/ql/src/ide-contextual-queries/printAst.ql +++ b/ql/src/ide-contextual-queries/printAst.ql @@ -8,8 +8,8 @@ */ // Switch between the below two to switch between generated and pretty AST. -import codeql_ql.printAstGenerated -// import codeql_ql.printAstAst +// import codeql_ql.printAstGenerated +import codeql_ql.printAstAst import codeql.IDEContextual /** From 1d7f43206efacb48934e0272c96402167f92ba4f Mon Sep 17 00:00:00 2001 From: Erik Krogh Kristensen Date: Thu, 27 May 2021 10:13:42 +0000 Subject: [PATCH 3/3] update the printAst test --- ql/test/printAst/printAst.expected | 778 ++++++++++------------------- ql/test/printAst/printAst.ql | 2 +- 2 files changed, 275 insertions(+), 505 deletions(-) diff --git a/ql/test/printAst/printAst.expected b/ql/test/printAst/printAst.expected index 75732ce0be4..f0a13893901 100644 --- a/ql/test/printAst/printAst.expected +++ b/ql/test/printAst/printAst.expected @@ -1,512 +1,282 @@ nodes -| Foo.qll:1:1:1:6 | import | semmle.label | [ReservedWord] import | -| Foo.qll:1:1:1:6 | import | semmle.order | 1 | -| Foo.qll:1:1:1:17 | ImportDirective | semmle.label | [ImportDirective] ImportDirective | -| Foo.qll:1:1:1:17 | ImportDirective | semmle.order | 1 | -| Foo.qll:1:1:1:17 | ModuleMember | semmle.label | [ModuleMember] ModuleMember | -| Foo.qll:1:1:1:17 | ModuleMember | semmle.order | 1 | -| Foo.qll:1:1:11:2 | Ql | semmle.label | [Ql] Ql | -| Foo.qll:1:1:11:2 | Ql | semmle.order | 1 | -| Foo.qll:1:8:1:17 | ImportModuleExpr | semmle.label | [ImportModuleExpr] ImportModuleExpr | -| Foo.qll:1:8:1:17 | ImportModuleExpr | semmle.order | 5 | -| Foo.qll:1:8:1:17 | QualModuleExpr | semmle.label | [QualModuleExpr] QualModuleExpr | -| Foo.qll:1:8:1:17 | QualModuleExpr | semmle.order | 5 | -| Foo.qll:1:8:1:17 | javascript | semmle.label | [SimpleId] javascript | -| Foo.qll:1:8:1:17 | javascript | semmle.order | 5 | -| Foo.qll:3:1:3:5 | class | semmle.label | [ReservedWord] class | -| Foo.qll:3:1:3:5 | class | semmle.order | 8 | -| Foo.qll:3:1:7:1 | Dataclass | semmle.label | [Dataclass] Dataclass | -| Foo.qll:3:1:7:1 | Dataclass | semmle.order | 8 | -| Foo.qll:3:1:7:1 | ModuleMember | semmle.label | [ModuleMember] ModuleMember | -| Foo.qll:3:1:7:1 | ModuleMember | semmle.order | 8 | -| Foo.qll:3:7:3:9 | Foo | semmle.label | [ClassName] Foo | -| Foo.qll:3:7:3:9 | Foo | semmle.order | 11 | -| Foo.qll:3:11:3:17 | extends | semmle.label | [ReservedWord] extends | -| Foo.qll:3:11:3:17 | extends | semmle.order | 12 | -| Foo.qll:3:19:3:22 | @bar | semmle.label | [Dbtype] @bar | -| Foo.qll:3:19:3:22 | @bar | semmle.order | 13 | -| Foo.qll:3:19:3:22 | TypeExpr | semmle.label | [TypeExpr] TypeExpr | -| Foo.qll:3:19:3:22 | TypeExpr | semmle.order | 13 | -| Foo.qll:3:24:3:24 | { | semmle.label | [ReservedWord] { | -| Foo.qll:3:24:3:24 | { | semmle.order | 15 | -| Foo.qll:4:3:4:5 | Foo | semmle.label | [ClassName] Foo | -| Foo.qll:4:3:4:5 | Foo | semmle.order | 16 | -| Foo.qll:4:3:4:17 | Charpred | semmle.label | [Charpred] Charpred | -| Foo.qll:4:3:4:17 | Charpred | semmle.order | 16 | -| Foo.qll:4:3:4:17 | ClassMember | semmle.label | [ClassMember] ClassMember | -| Foo.qll:4:3:4:17 | ClassMember | semmle.order | 16 | -| Foo.qll:4:6:4:6 | ( | semmle.label | [ReservedWord] ( | -| Foo.qll:4:6:4:6 | ( | semmle.order | 19 | -| Foo.qll:4:7:4:7 | ) | semmle.label | [ReservedWord] ) | -| Foo.qll:4:7:4:7 | ) | semmle.order | 20 | -| Foo.qll:4:9:4:9 | { | semmle.label | [ReservedWord] { | -| Foo.qll:4:9:4:9 | { | semmle.order | 21 | -| Foo.qll:4:11:4:11 | 1 | semmle.label | [Integer] 1 | -| Foo.qll:4:11:4:11 | 1 | semmle.order | 22 | -| Foo.qll:4:11:4:11 | Literal | semmle.label | [Literal] Literal | -| Foo.qll:4:11:4:11 | Literal | semmle.order | 22 | -| Foo.qll:4:11:4:15 | CompTerm | semmle.label | [CompTerm] CompTerm | -| Foo.qll:4:11:4:15 | CompTerm | semmle.order | 22 | -| Foo.qll:4:13:4:13 | = | semmle.label | [Compop] = | -| Foo.qll:4:13:4:13 | = | semmle.label | [ReservedWord] = | -| Foo.qll:4:13:4:13 | = | semmle.order | 25 | -| Foo.qll:4:13:4:13 | = | semmle.order | 25 | -| Foo.qll:4:15:4:15 | 2 | semmle.label | [Integer] 2 | -| Foo.qll:4:15:4:15 | 2 | semmle.order | 27 | -| Foo.qll:4:15:4:15 | Literal | semmle.label | [Literal] Literal | -| Foo.qll:4:15:4:15 | Literal | semmle.order | 27 | -| Foo.qll:4:17:4:17 | } | semmle.label | [ReservedWord] } | -| Foo.qll:4:17:4:17 | } | semmle.order | 29 | -| Foo.qll:6:3:6:8 | TypeExpr | semmle.label | [TypeExpr] TypeExpr | -| Foo.qll:6:3:6:8 | TypeExpr | semmle.order | 30 | -| Foo.qll:6:3:6:8 | string | semmle.label | [PrimitiveType] string | -| Foo.qll:6:3:6:8 | string | semmle.label | [ReservedWord] string | -| Foo.qll:6:3:6:8 | string | semmle.order | 30 | -| Foo.qll:6:3:6:8 | string | semmle.order | 30 | -| Foo.qll:6:3:6:38 | ClassMember | semmle.label | [ClassMember] ClassMember | -| Foo.qll:6:3:6:38 | ClassMember | semmle.order | 30 | -| Foo.qll:6:3:6:38 | MemberPredicate | semmle.label | [MemberPredicate] MemberPredicate | -| Foo.qll:6:3:6:38 | MemberPredicate | semmle.order | 30 | -| Foo.qll:6:10:6:17 | toString | semmle.label | [PredicateName] toString | -| Foo.qll:6:10:6:17 | toString | semmle.order | 35 | -| Foo.qll:6:18:6:18 | ( | semmle.label | [ReservedWord] ( | -| Foo.qll:6:18:6:18 | ( | semmle.order | 36 | -| Foo.qll:6:19:6:19 | ) | semmle.label | [ReservedWord] ) | -| Foo.qll:6:19:6:19 | ) | semmle.order | 37 | -| Foo.qll:6:21:6:21 | { | semmle.label | [ReservedWord] { | -| Foo.qll:6:21:6:21 | { | semmle.order | 38 | -| Foo.qll:6:21:6:38 | Body | semmle.label | [Body] Body | -| Foo.qll:6:21:6:38 | Body | semmle.order | 38 | -| Foo.qll:6:23:6:28 | Variable | semmle.label | [Variable] Variable | -| Foo.qll:6:23:6:28 | Variable | semmle.order | 40 | -| Foo.qll:6:23:6:28 | result | semmle.label | [Result] result | -| Foo.qll:6:23:6:28 | result | semmle.order | 40 | -| Foo.qll:6:23:6:36 | CompTerm | semmle.label | [CompTerm] CompTerm | -| Foo.qll:6:23:6:36 | CompTerm | semmle.order | 40 | -| Foo.qll:6:30:6:30 | = | semmle.label | [Compop] = | -| Foo.qll:6:30:6:30 | = | semmle.label | [ReservedWord] = | -| Foo.qll:6:30:6:30 | = | semmle.order | 43 | -| Foo.qll:6:30:6:30 | = | semmle.order | 43 | -| Foo.qll:6:32:6:36 | "Foo" | semmle.label | [String] "Foo" | -| Foo.qll:6:32:6:36 | "Foo" | semmle.order | 45 | -| Foo.qll:6:32:6:36 | Literal | semmle.label | [Literal] Literal | -| Foo.qll:6:32:6:36 | Literal | semmle.order | 45 | -| Foo.qll:6:38:6:38 | } | semmle.label | [ReservedWord] } | -| Foo.qll:6:38:6:38 | } | semmle.order | 47 | -| Foo.qll:7:1:7:1 | } | semmle.label | [ReservedWord] } | -| Foo.qll:7:1:7:1 | } | semmle.order | 48 | -| Foo.qll:9:1:9:5 | Annotation | semmle.label | [Annotation] Annotation | -| Foo.qll:9:1:9:5 | Annotation | semmle.order | 49 | -| Foo.qll:9:1:9:5 | query | semmle.label | [AnnotName] query | -| Foo.qll:9:1:9:5 | query | semmle.order | 49 | -| Foo.qll:9:1:11:1 | ModuleMember | semmle.label | [ModuleMember] ModuleMember | -| Foo.qll:9:1:11:1 | ModuleMember | semmle.order | 49 | -| Foo.qll:9:7:9:15 | predicate | semmle.label | [Predicate] predicate | -| Foo.qll:9:7:9:15 | predicate | semmle.order | 52 | +| Foo.qll:1:1:1:17 | Import | semmle.label | [Import] Import | +| Foo.qll:1:1:1:17 | Import | semmle.order | 1 | +| Foo.qll:3:1:7:1 | Class | semmle.label | [Class] Class | +| Foo.qll:3:1:7:1 | Class | semmle.order | 2 | +| Foo.qll:3:19:3:22 | Type | semmle.label | [Type] Type | +| Foo.qll:3:19:3:22 | Type | semmle.order | 3 | +| Foo.qll:4:3:4:17 | CharPred | semmle.label | [CharPred] CharPred | +| Foo.qll:4:3:4:17 | CharPred | semmle.order | 4 | +| Foo.qll:4:11:4:11 | Integer | semmle.label | [Integer] Integer | +| Foo.qll:4:11:4:11 | Integer | semmle.order | 5 | +| Foo.qll:4:11:4:15 | ComparisonFormula | semmle.label | [ComparisonFormula] ComparisonFormula | +| Foo.qll:4:11:4:15 | ComparisonFormula | semmle.order | 5 | +| Foo.qll:4:13:4:13 | ComparisonOp | semmle.label | [ComparisonOp] ComparisonOp | +| Foo.qll:4:13:4:13 | ComparisonOp | semmle.order | 7 | +| Foo.qll:4:15:4:15 | Integer | semmle.label | [Integer] Integer | +| Foo.qll:4:15:4:15 | Integer | semmle.order | 8 | +| Foo.qll:6:3:6:8 | Type | semmle.label | [Type] Type | +| Foo.qll:6:3:6:8 | Type | semmle.order | 9 | +| Foo.qll:6:3:6:38 | ClassPredicate | semmle.label | [ClassPredicate] ClassPredicate | +| Foo.qll:6:3:6:38 | ClassPredicate | semmle.order | 9 | +| Foo.qll:6:23:6:28 | Identifier | semmle.label | [Identifier] Identifier | +| Foo.qll:6:23:6:28 | Identifier | semmle.order | 11 | +| Foo.qll:6:23:6:36 | ComparisonFormula | semmle.label | [ComparisonFormula] ComparisonFormula | +| Foo.qll:6:23:6:36 | ComparisonFormula | semmle.order | 11 | +| Foo.qll:6:30:6:30 | ComparisonOp | semmle.label | [ComparisonOp] ComparisonOp | +| Foo.qll:6:30:6:30 | ComparisonOp | semmle.order | 13 | +| Foo.qll:6:32:6:36 | String | semmle.label | [String] String | +| Foo.qll:6:32:6:36 | String | semmle.order | 14 | | Foo.qll:9:7:11:1 | ClasslessPredicate | semmle.label | [ClasslessPredicate] ClasslessPredicate | -| Foo.qll:9:7:11:1 | ClasslessPredicate | semmle.order | 52 | -| Foo.qll:9:17:9:19 | foo | semmle.label | [PredicateName] foo | -| Foo.qll:9:17:9:19 | foo | semmle.order | 54 | -| Foo.qll:9:20:9:20 | ( | semmle.label | [ReservedWord] ( | -| Foo.qll:9:20:9:20 | ( | semmle.order | 55 | -| Foo.qll:9:21:9:23 | Foo | semmle.label | [ClassName] Foo | -| Foo.qll:9:21:9:23 | Foo | semmle.order | 56 | -| Foo.qll:9:21:9:23 | TypeExpr | semmle.label | [TypeExpr] TypeExpr | -| Foo.qll:9:21:9:23 | TypeExpr | semmle.order | 56 | +| Foo.qll:9:7:11:1 | ClasslessPredicate | semmle.order | 15 | +| Foo.qll:9:21:9:23 | Type | semmle.label | [Type] Type | +| Foo.qll:9:21:9:23 | Type | semmle.order | 16 | | Foo.qll:9:21:9:25 | VarDecl | semmle.label | [VarDecl] VarDecl | -| Foo.qll:9:21:9:25 | VarDecl | semmle.order | 56 | -| Foo.qll:9:25:9:25 | VarName | semmle.label | [VarName] VarName | -| Foo.qll:9:25:9:25 | VarName | semmle.order | 59 | -| Foo.qll:9:25:9:25 | f | semmle.label | [SimpleId] f | -| Foo.qll:9:25:9:25 | f | semmle.order | 59 | -| Foo.qll:9:26:9:26 | ) | semmle.label | [ReservedWord] ) | -| Foo.qll:9:26:9:26 | ) | semmle.order | 61 | -| Foo.qll:9:28:9:28 | { | semmle.label | [ReservedWord] { | -| Foo.qll:9:28:9:28 | { | semmle.order | 62 | -| Foo.qll:9:28:11:1 | Body | semmle.label | [Body] Body | -| Foo.qll:9:28:11:1 | Body | semmle.order | 62 | -| Foo.qll:10:3:10:3 | VarName | semmle.label | [VarName] VarName | -| Foo.qll:10:3:10:3 | VarName | semmle.order | 64 | -| Foo.qll:10:3:10:3 | Variable | semmle.label | [Variable] Variable | -| Foo.qll:10:3:10:3 | Variable | semmle.order | 64 | -| Foo.qll:10:3:10:3 | f | semmle.label | [SimpleId] f | -| Foo.qll:10:3:10:3 | f | semmle.order | 64 | -| Foo.qll:10:3:10:85 | CompTerm | semmle.label | [CompTerm] CompTerm | -| Foo.qll:10:3:10:85 | CompTerm | semmle.order | 64 | -| Foo.qll:10:5:10:5 | = | semmle.label | [Compop] = | -| Foo.qll:10:5:10:5 | = | semmle.label | [ReservedWord] = | -| Foo.qll:10:5:10:5 | = | semmle.order | 68 | -| Foo.qll:10:5:10:5 | = | semmle.order | 68 | -| Foo.qll:10:7:10:10 | rank | semmle.label | [AggId] rank | -| Foo.qll:10:7:10:10 | rank | semmle.label | [ReservedWord] rank | -| Foo.qll:10:7:10:10 | rank | semmle.order | 70 | -| Foo.qll:10:7:10:10 | rank | semmle.order | 70 | -| Foo.qll:10:7:10:85 | Aggregate | semmle.label | [Aggregate] Aggregate | -| Foo.qll:10:7:10:85 | Aggregate | semmle.order | 70 | -| Foo.qll:10:11:10:11 | [ | semmle.label | [ReservedWord] [ | -| Foo.qll:10:11:10:11 | [ | semmle.order | 73 | -| Foo.qll:10:12:10:12 | 2 | semmle.label | [Integer] 2 | -| Foo.qll:10:12:10:12 | 2 | semmle.order | 74 | -| Foo.qll:10:12:10:12 | Literal | semmle.label | [Literal] Literal | -| Foo.qll:10:12:10:12 | Literal | semmle.order | 74 | -| Foo.qll:10:13:10:13 | ] | semmle.label | [ReservedWord] ] | -| Foo.qll:10:13:10:13 | ] | semmle.order | 76 | -| Foo.qll:10:14:10:14 | ( | semmle.label | [ReservedWord] ( | -| Foo.qll:10:14:10:14 | ( | semmle.order | 77 | -| Foo.qll:10:15:10:17 | Foo | semmle.label | [ClassName] Foo | -| Foo.qll:10:15:10:17 | Foo | semmle.order | 78 | -| Foo.qll:10:15:10:17 | TypeExpr | semmle.label | [TypeExpr] TypeExpr | -| Foo.qll:10:15:10:17 | TypeExpr | semmle.order | 78 | +| Foo.qll:9:21:9:25 | VarDecl | semmle.order | 16 | +| Foo.qll:10:3:10:3 | Identifier | semmle.label | [Identifier] Identifier | +| Foo.qll:10:3:10:3 | Identifier | semmle.order | 18 | +| Foo.qll:10:3:10:85 | ComparisonFormula | semmle.label | [ComparisonFormula] ComparisonFormula | +| Foo.qll:10:3:10:85 | ComparisonFormula | semmle.order | 18 | +| Foo.qll:10:5:10:5 | ComparisonOp | semmle.label | [ComparisonOp] ComparisonOp | +| Foo.qll:10:5:10:5 | ComparisonOp | semmle.order | 20 | +| Foo.qll:10:7:10:85 | Rank | semmle.label | [Rank] Rank | +| Foo.qll:10:7:10:85 | Rank | semmle.order | 21 | +| Foo.qll:10:12:10:12 | Integer | semmle.label | [Integer] Integer | +| Foo.qll:10:12:10:12 | Integer | semmle.order | 22 | +| Foo.qll:10:15:10:17 | Type | semmle.label | [Type] Type | +| Foo.qll:10:15:10:17 | Type | semmle.order | 23 | | Foo.qll:10:15:10:23 | VarDecl | semmle.label | [VarDecl] VarDecl | -| Foo.qll:10:15:10:23 | VarDecl | semmle.order | 78 | -| Foo.qll:10:15:10:84 | FullAggregateBody | semmle.label | [FullAggregateBody] FullAggregateBody | -| Foo.qll:10:15:10:84 | FullAggregateBody | semmle.order | 78 | -| Foo.qll:10:19:10:23 | VarName | semmle.label | [VarName] VarName | -| Foo.qll:10:19:10:23 | VarName | semmle.order | 82 | -| Foo.qll:10:19:10:23 | inner | semmle.label | [SimpleId] inner | -| Foo.qll:10:19:10:23 | inner | semmle.order | 82 | -| Foo.qll:10:25:10:25 | \| | semmle.label | [ReservedWord] \| | -| Foo.qll:10:25:10:25 | \| | semmle.order | 84 | -| Foo.qll:10:27:10:31 | VarName | semmle.label | [VarName] VarName | -| Foo.qll:10:27:10:31 | VarName | semmle.order | 85 | -| Foo.qll:10:27:10:31 | Variable | semmle.label | [Variable] Variable | -| Foo.qll:10:27:10:31 | Variable | semmle.order | 85 | -| Foo.qll:10:27:10:31 | inner | semmle.label | [SimpleId] inner | -| Foo.qll:10:27:10:31 | inner | semmle.order | 85 | -| Foo.qll:10:27:10:42 | QualifiedExpr | semmle.label | [QualifiedExpr] QualifiedExpr | -| Foo.qll:10:27:10:42 | QualifiedExpr | semmle.order | 85 | -| Foo.qll:10:27:10:50 | CompTerm | semmle.label | [CompTerm] CompTerm | -| Foo.qll:10:27:10:50 | CompTerm | semmle.order | 85 | -| Foo.qll:10:32:10:32 | . | semmle.label | [ReservedWord] . | -| Foo.qll:10:32:10:32 | . | semmle.order | 90 | -| Foo.qll:10:33:10:40 | toString | semmle.label | [PredicateName] toString | -| Foo.qll:10:33:10:40 | toString | semmle.order | 91 | -| Foo.qll:10:33:10:42 | QualifiedRhs | semmle.label | [QualifiedRhs] QualifiedRhs | -| Foo.qll:10:33:10:42 | QualifiedRhs | semmle.order | 91 | -| Foo.qll:10:41:10:41 | ( | semmle.label | [ReservedWord] ( | -| Foo.qll:10:41:10:41 | ( | semmle.order | 93 | -| Foo.qll:10:42:10:42 | ) | semmle.label | [ReservedWord] ) | -| Foo.qll:10:42:10:42 | ) | semmle.order | 94 | -| Foo.qll:10:44:10:44 | = | semmle.label | [Compop] = | -| Foo.qll:10:44:10:44 | = | semmle.label | [ReservedWord] = | -| Foo.qll:10:44:10:44 | = | semmle.order | 95 | -| Foo.qll:10:44:10:44 | = | semmle.order | 95 | -| Foo.qll:10:46:10:50 | "foo" | semmle.label | [String] "foo" | -| Foo.qll:10:46:10:50 | "foo" | semmle.order | 97 | -| Foo.qll:10:46:10:50 | Literal | semmle.label | [Literal] Literal | -| Foo.qll:10:46:10:50 | Literal | semmle.order | 97 | -| Foo.qll:10:52:10:52 | \| | semmle.label | [ReservedWord] \| | -| Foo.qll:10:52:10:52 | \| | semmle.order | 99 | +| Foo.qll:10:15:10:23 | VarDecl | semmle.order | 23 | +| Foo.qll:10:27:10:31 | Identifier | semmle.label | [Identifier] Identifier | +| Foo.qll:10:27:10:31 | Identifier | semmle.order | 25 | +| Foo.qll:10:27:10:42 | MemberCall | semmle.label | [MemberCall] MemberCall | +| Foo.qll:10:27:10:42 | MemberCall | semmle.order | 25 | +| Foo.qll:10:27:10:50 | ComparisonFormula | semmle.label | [ComparisonFormula] ComparisonFormula | +| Foo.qll:10:27:10:50 | ComparisonFormula | semmle.order | 25 | +| Foo.qll:10:44:10:44 | ComparisonOp | semmle.label | [ComparisonOp] ComparisonOp | +| Foo.qll:10:44:10:44 | ComparisonOp | semmle.order | 28 | +| Foo.qll:10:46:10:50 | String | semmle.label | [String] String | +| Foo.qll:10:46:10:50 | String | semmle.order | 29 | | Foo.qll:10:54:10:58 | AsExpr | semmle.label | [AsExpr] AsExpr | -| Foo.qll:10:54:10:58 | AsExpr | semmle.order | 100 | -| Foo.qll:10:54:10:58 | AsExprs | semmle.label | [AsExprs] AsExprs | -| Foo.qll:10:54:10:58 | AsExprs | semmle.order | 100 | -| Foo.qll:10:54:10:58 | VarName | semmle.label | [VarName] VarName | -| Foo.qll:10:54:10:58 | VarName | semmle.order | 100 | -| Foo.qll:10:54:10:58 | Variable | semmle.label | [Variable] Variable | -| Foo.qll:10:54:10:58 | Variable | semmle.order | 100 | -| Foo.qll:10:54:10:58 | inner | semmle.label | [SimpleId] inner | -| Foo.qll:10:54:10:58 | inner | semmle.order | 100 | -| Foo.qll:10:60:10:64 | order | semmle.label | [ReservedWord] order | -| Foo.qll:10:60:10:64 | order | semmle.order | 105 | -| Foo.qll:10:60:10:84 | OrderBys | semmle.label | [OrderBys] OrderBys | -| Foo.qll:10:60:10:84 | OrderBys | semmle.order | 105 | -| Foo.qll:10:66:10:67 | by | semmle.label | [ReservedWord] by | -| Foo.qll:10:66:10:67 | by | semmle.order | 107 | -| Foo.qll:10:69:10:73 | VarName | semmle.label | [VarName] VarName | -| Foo.qll:10:69:10:73 | VarName | semmle.order | 108 | -| Foo.qll:10:69:10:73 | Variable | semmle.label | [Variable] Variable | -| Foo.qll:10:69:10:73 | Variable | semmle.order | 108 | -| Foo.qll:10:69:10:73 | inner | semmle.label | [SimpleId] inner | -| Foo.qll:10:69:10:73 | inner | semmle.order | 108 | -| Foo.qll:10:69:10:84 | OrderBy | semmle.label | [OrderBy] OrderBy | -| Foo.qll:10:69:10:84 | OrderBy | semmle.order | 108 | -| Foo.qll:10:69:10:84 | QualifiedExpr | semmle.label | [QualifiedExpr] QualifiedExpr | -| Foo.qll:10:69:10:84 | QualifiedExpr | semmle.order | 108 | -| Foo.qll:10:74:10:74 | . | semmle.label | [ReservedWord] . | -| Foo.qll:10:74:10:74 | . | semmle.order | 113 | -| Foo.qll:10:75:10:82 | toString | semmle.label | [PredicateName] toString | -| Foo.qll:10:75:10:82 | toString | semmle.order | 114 | -| Foo.qll:10:75:10:84 | QualifiedRhs | semmle.label | [QualifiedRhs] QualifiedRhs | -| Foo.qll:10:75:10:84 | QualifiedRhs | semmle.order | 114 | -| Foo.qll:10:83:10:83 | ( | semmle.label | [ReservedWord] ( | -| Foo.qll:10:83:10:83 | ( | semmle.order | 116 | -| Foo.qll:10:84:10:84 | ) | semmle.label | [ReservedWord] ) | -| Foo.qll:10:84:10:84 | ) | semmle.order | 117 | -| Foo.qll:10:85:10:85 | ) | semmle.label | [ReservedWord] ) | -| Foo.qll:10:85:10:85 | ) | semmle.order | 118 | -| Foo.qll:11:1:11:1 | } | semmle.label | [ReservedWord] } | -| Foo.qll:11:1:11:1 | } | semmle.order | 119 | -| printAst.ql:1:1:1:6 | import | semmle.label | [ReservedWord] import | -| printAst.ql:1:1:1:6 | import | semmle.order | 120 | -| printAst.ql:1:1:1:25 | ImportDirective | semmle.label | [ImportDirective] ImportDirective | -| printAst.ql:1:1:1:25 | ImportDirective | semmle.order | 120 | -| printAst.ql:1:1:1:25 | ModuleMember | semmle.label | [ModuleMember] ModuleMember | -| printAst.ql:1:1:1:25 | ModuleMember | semmle.order | 120 | -| printAst.ql:1:1:1:26 | Ql | semmle.label | [Ql] Ql | -| printAst.ql:1:1:1:26 | Ql | semmle.order | 120 | -| printAst.ql:1:8:1:16 | codeql_ql | semmle.label | [SimpleId] codeql_ql | -| printAst.ql:1:8:1:16 | codeql_ql | semmle.order | 124 | -| printAst.ql:1:8:1:25 | ImportModuleExpr | semmle.label | [ImportModuleExpr] ImportModuleExpr | -| printAst.ql:1:8:1:25 | ImportModuleExpr | semmle.order | 124 | -| printAst.ql:1:8:1:25 | QualModuleExpr | semmle.label | [QualModuleExpr] QualModuleExpr | -| printAst.ql:1:8:1:25 | QualModuleExpr | semmle.order | 124 | -| printAst.ql:1:17:1:17 | . | semmle.label | [ReservedWord] . | -| printAst.ql:1:17:1:17 | . | semmle.order | 127 | -| printAst.ql:1:18:1:25 | printAst | semmle.label | [SimpleId] printAst | -| printAst.ql:1:18:1:25 | printAst | semmle.order | 128 | +| Foo.qll:10:54:10:58 | AsExpr | semmle.order | 30 | +| Foo.qll:10:54:10:58 | Identifier | semmle.label | [Identifier] Identifier | +| Foo.qll:10:54:10:58 | Identifier | semmle.order | 30 | +| Foo.qll:10:69:10:73 | Identifier | semmle.label | [Identifier] Identifier | +| Foo.qll:10:69:10:73 | Identifier | semmle.order | 32 | +| Foo.qll:10:69:10:84 | MemberCall | semmle.label | [MemberCall] MemberCall | +| Foo.qll:10:69:10:84 | MemberCall | semmle.order | 32 | +| Foo.qll:13:1:25:1 | ClasslessPredicate | semmle.label | [ClasslessPredicate] ClasslessPredicate | +| Foo.qll:13:1:25:1 | ClasslessPredicate | semmle.order | 34 | +| Foo.qll:13:17:13:19 | Type | semmle.label | [Type] Type | +| Foo.qll:13:17:13:19 | Type | semmle.order | 35 | +| Foo.qll:13:17:13:21 | VarDecl | semmle.label | [VarDecl] VarDecl | +| Foo.qll:13:17:13:21 | VarDecl | semmle.order | 35 | +| Foo.qll:14:3:14:10 | PredicateCall | semmle.label | [PredicateCall] PredicateCall | +| Foo.qll:14:3:14:10 | PredicateCall | semmle.order | 37 | +| Foo.qll:14:3:16:29 | Disjunction | semmle.label | [Disjunction] Disjunction | +| Foo.qll:14:3:16:29 | Disjunction | semmle.order | 37 | +| Foo.qll:14:3:18:28 | Disjunction | semmle.label | [Disjunction] Disjunction | +| Foo.qll:14:3:18:28 | Disjunction | semmle.order | 37 | +| Foo.qll:14:3:20:13 | Disjunction | semmle.label | [Disjunction] Disjunction | +| Foo.qll:14:3:20:13 | Disjunction | semmle.order | 37 | +| Foo.qll:14:3:22:16 | Disjunction | semmle.label | [Disjunction] Disjunction | +| Foo.qll:14:3:22:16 | Disjunction | semmle.order | 37 | +| Foo.qll:14:3:24:7 | Disjunction | semmle.label | [Disjunction] Disjunction | +| Foo.qll:14:3:24:7 | Disjunction | semmle.order | 37 | +| Foo.qll:14:9:14:9 | Identifier | semmle.label | [Identifier] Identifier | +| Foo.qll:14:9:14:9 | Identifier | semmle.order | 43 | +| Foo.qll:16:3:16:7 | String | semmle.label | [String] String | +| Foo.qll:16:3:16:7 | String | semmle.order | 44 | +| Foo.qll:16:3:16:29 | ComparisonFormula | semmle.label | [ComparisonFormula] ComparisonFormula | +| Foo.qll:16:3:16:29 | ComparisonFormula | semmle.order | 44 | +| Foo.qll:16:9:16:9 | ComparisonOp | semmle.label | [ComparisonOp] ComparisonOp | +| Foo.qll:16:9:16:9 | ComparisonOp | semmle.order | 46 | +| Foo.qll:16:11:16:11 | Identifier | semmle.label | [Identifier] Identifier | +| Foo.qll:16:11:16:11 | Identifier | semmle.order | 47 | +| Foo.qll:16:11:16:29 | MemberCall | semmle.label | [MemberCall] MemberCall | +| Foo.qll:16:11:16:29 | MemberCall | semmle.order | 47 | +| Foo.qll:16:22:16:22 | Integer | semmle.label | [Integer] Integer | +| Foo.qll:16:22:16:22 | Integer | semmle.order | 49 | +| Foo.qll:16:25:16:25 | Integer | semmle.label | [Integer] Integer | +| Foo.qll:16:25:16:25 | Integer | semmle.order | 50 | +| Foo.qll:16:28:16:28 | Integer | semmle.label | [Integer] Integer | +| Foo.qll:16:28:16:28 | Integer | semmle.order | 51 | +| Foo.qll:18:3:18:3 | Identifier | semmle.label | [Identifier] Identifier | +| Foo.qll:18:3:18:3 | Identifier | semmle.order | 52 | +| Foo.qll:18:3:18:9 | InlineCast | semmle.label | [InlineCast] InlineCast | +| Foo.qll:18:3:18:9 | InlineCast | semmle.order | 52 | +| Foo.qll:18:3:18:20 | MemberCall | semmle.label | [MemberCall] MemberCall | +| Foo.qll:18:3:18:20 | MemberCall | semmle.order | 52 | +| Foo.qll:18:3:18:28 | ComparisonFormula | semmle.label | [ComparisonFormula] ComparisonFormula | +| Foo.qll:18:3:18:28 | ComparisonFormula | semmle.order | 52 | +| Foo.qll:18:6:18:8 | Type | semmle.label | [Type] Type | +| Foo.qll:18:6:18:8 | Type | semmle.order | 56 | +| Foo.qll:18:22:18:22 | ComparisonOp | semmle.label | [ComparisonOp] ComparisonOp | +| Foo.qll:18:22:18:22 | ComparisonOp | semmle.order | 57 | +| Foo.qll:18:24:18:28 | String | semmle.label | [String] String | +| Foo.qll:18:24:18:28 | String | semmle.order | 58 | +| Foo.qll:20:3:20:3 | Identifier | semmle.label | [Identifier] Identifier | +| Foo.qll:20:3:20:3 | Identifier | semmle.order | 59 | +| Foo.qll:20:3:20:9 | InlineCast | semmle.label | [InlineCast] InlineCast | +| Foo.qll:20:3:20:9 | InlineCast | semmle.order | 59 | +| Foo.qll:20:3:20:13 | ComparisonFormula | semmle.label | [ComparisonFormula] ComparisonFormula | +| Foo.qll:20:3:20:13 | ComparisonFormula | semmle.order | 59 | +| Foo.qll:20:6:20:8 | Type | semmle.label | [Type] Type | +| Foo.qll:20:6:20:8 | Type | semmle.order | 62 | +| Foo.qll:20:11:20:11 | ComparisonOp | semmle.label | [ComparisonOp] ComparisonOp | +| Foo.qll:20:11:20:11 | ComparisonOp | semmle.order | 63 | +| Foo.qll:20:13:20:13 | Identifier | semmle.label | [Identifier] Identifier | +| Foo.qll:20:13:20:13 | Identifier | semmle.order | 64 | +| Foo.qll:22:3:22:3 | Identifier | semmle.label | [Identifier] Identifier | +| Foo.qll:22:3:22:3 | Identifier | semmle.order | 65 | +| Foo.qll:22:3:22:16 | ComparisonFormula | semmle.label | [ComparisonFormula] ComparisonFormula | +| Foo.qll:22:3:22:16 | ComparisonFormula | semmle.order | 65 | +| Foo.qll:22:5:22:5 | ComparisonOp | semmle.label | [ComparisonOp] ComparisonOp | +| Foo.qll:22:5:22:5 | ComparisonOp | semmle.order | 67 | +| Foo.qll:22:7:22:16 | Aggregate[any] | semmle.label | [Aggregate[any]] Aggregate[any] | +| Foo.qll:22:7:22:16 | Aggregate[any] | semmle.order | 68 | +| Foo.qll:22:11:22:13 | Type | semmle.label | [Type] Type | +| Foo.qll:22:11:22:13 | Type | semmle.order | 69 | +| Foo.qll:22:11:22:15 | VarDecl | semmle.label | [VarDecl] VarDecl | +| Foo.qll:22:11:22:15 | VarDecl | semmle.order | 69 | +| Foo.qll:24:3:24:7 | AnyCall | semmle.label | [AnyCall] AnyCall | +| Foo.qll:24:3:24:7 | AnyCall | semmle.order | 71 | +| printAst.ql:1:1:1:28 | Import | semmle.label | [Import] Import | +| printAst.ql:1:1:1:28 | Import | semmle.order | 72 | edges -| Foo.qll:1:1:1:17 | ImportDirective | Foo.qll:1:1:1:6 | import | semmle.label | 1 | -| Foo.qll:1:1:1:17 | ImportDirective | Foo.qll:1:1:1:6 | import | semmle.order | 1 | -| Foo.qll:1:1:1:17 | ImportDirective | Foo.qll:1:8:1:17 | ImportModuleExpr | semmle.label | 2 | -| Foo.qll:1:1:1:17 | ImportDirective | Foo.qll:1:8:1:17 | ImportModuleExpr | semmle.order | 5 | -| Foo.qll:1:1:1:17 | ModuleMember | Foo.qll:1:1:1:17 | ImportDirective | semmle.label | 1 | -| Foo.qll:1:1:1:17 | ModuleMember | Foo.qll:1:1:1:17 | ImportDirective | semmle.order | 1 | -| Foo.qll:1:1:11:2 | Ql | Foo.qll:1:1:1:17 | ModuleMember | semmle.label | 1 | -| Foo.qll:1:1:11:2 | Ql | Foo.qll:1:1:1:17 | ModuleMember | semmle.order | 1 | -| Foo.qll:1:1:11:2 | Ql | Foo.qll:3:1:7:1 | ModuleMember | semmle.label | 2 | -| Foo.qll:1:1:11:2 | Ql | Foo.qll:3:1:7:1 | ModuleMember | semmle.order | 8 | -| Foo.qll:1:1:11:2 | Ql | Foo.qll:9:1:11:1 | ModuleMember | semmle.label | 3 | -| Foo.qll:1:1:11:2 | Ql | Foo.qll:9:1:11:1 | ModuleMember | semmle.order | 49 | -| Foo.qll:1:8:1:17 | ImportModuleExpr | Foo.qll:1:8:1:17 | QualModuleExpr | semmle.label | 1 | -| Foo.qll:1:8:1:17 | ImportModuleExpr | Foo.qll:1:8:1:17 | QualModuleExpr | semmle.order | 5 | -| Foo.qll:1:8:1:17 | QualModuleExpr | Foo.qll:1:8:1:17 | javascript | semmle.label | 1 | -| Foo.qll:1:8:1:17 | QualModuleExpr | Foo.qll:1:8:1:17 | javascript | semmle.order | 5 | -| Foo.qll:3:1:7:1 | Dataclass | Foo.qll:3:1:3:5 | class | semmle.label | 1 | -| Foo.qll:3:1:7:1 | Dataclass | Foo.qll:3:1:3:5 | class | semmle.order | 8 | -| Foo.qll:3:1:7:1 | Dataclass | Foo.qll:3:7:3:9 | Foo | semmle.label | 2 | -| Foo.qll:3:1:7:1 | Dataclass | Foo.qll:3:7:3:9 | Foo | semmle.order | 11 | -| Foo.qll:3:1:7:1 | Dataclass | Foo.qll:3:11:3:17 | extends | semmle.label | 3 | -| Foo.qll:3:1:7:1 | Dataclass | Foo.qll:3:11:3:17 | extends | semmle.order | 12 | -| Foo.qll:3:1:7:1 | Dataclass | Foo.qll:3:19:3:22 | TypeExpr | semmle.label | 4 | -| Foo.qll:3:1:7:1 | Dataclass | Foo.qll:3:19:3:22 | TypeExpr | semmle.order | 13 | -| Foo.qll:3:1:7:1 | Dataclass | Foo.qll:3:24:3:24 | { | semmle.label | 5 | -| Foo.qll:3:1:7:1 | Dataclass | Foo.qll:3:24:3:24 | { | semmle.order | 15 | -| Foo.qll:3:1:7:1 | Dataclass | Foo.qll:4:3:4:17 | ClassMember | semmle.label | 6 | -| Foo.qll:3:1:7:1 | Dataclass | Foo.qll:4:3:4:17 | ClassMember | semmle.order | 16 | -| Foo.qll:3:1:7:1 | Dataclass | Foo.qll:6:3:6:38 | ClassMember | semmle.label | 7 | -| Foo.qll:3:1:7:1 | Dataclass | Foo.qll:6:3:6:38 | ClassMember | semmle.order | 30 | -| Foo.qll:3:1:7:1 | Dataclass | Foo.qll:7:1:7:1 | } | semmle.label | 8 | -| Foo.qll:3:1:7:1 | Dataclass | Foo.qll:7:1:7:1 | } | semmle.order | 48 | -| Foo.qll:3:1:7:1 | ModuleMember | Foo.qll:3:1:7:1 | Dataclass | semmle.label | 1 | -| Foo.qll:3:1:7:1 | ModuleMember | Foo.qll:3:1:7:1 | Dataclass | semmle.order | 8 | -| Foo.qll:3:19:3:22 | TypeExpr | Foo.qll:3:19:3:22 | @bar | semmle.label | 1 | -| Foo.qll:3:19:3:22 | TypeExpr | Foo.qll:3:19:3:22 | @bar | semmle.order | 13 | -| Foo.qll:4:3:4:17 | Charpred | Foo.qll:4:3:4:5 | Foo | semmle.label | 1 | -| Foo.qll:4:3:4:17 | Charpred | Foo.qll:4:3:4:5 | Foo | semmle.order | 16 | -| Foo.qll:4:3:4:17 | Charpred | Foo.qll:4:6:4:6 | ( | semmle.label | 2 | -| Foo.qll:4:3:4:17 | Charpred | Foo.qll:4:6:4:6 | ( | semmle.order | 19 | -| Foo.qll:4:3:4:17 | Charpred | Foo.qll:4:7:4:7 | ) | semmle.label | 3 | -| Foo.qll:4:3:4:17 | Charpred | Foo.qll:4:7:4:7 | ) | semmle.order | 20 | -| Foo.qll:4:3:4:17 | Charpred | Foo.qll:4:9:4:9 | { | semmle.label | 4 | -| Foo.qll:4:3:4:17 | Charpred | Foo.qll:4:9:4:9 | { | semmle.order | 21 | -| Foo.qll:4:3:4:17 | Charpred | Foo.qll:4:11:4:15 | CompTerm | semmle.label | 5 | -| Foo.qll:4:3:4:17 | Charpred | Foo.qll:4:11:4:15 | CompTerm | semmle.order | 22 | -| Foo.qll:4:3:4:17 | Charpred | Foo.qll:4:17:4:17 | } | semmle.label | 6 | -| Foo.qll:4:3:4:17 | Charpred | Foo.qll:4:17:4:17 | } | semmle.order | 29 | -| Foo.qll:4:3:4:17 | ClassMember | Foo.qll:4:3:4:17 | Charpred | semmle.label | 1 | -| Foo.qll:4:3:4:17 | ClassMember | Foo.qll:4:3:4:17 | Charpred | semmle.order | 16 | -| Foo.qll:4:11:4:11 | Literal | Foo.qll:4:11:4:11 | 1 | semmle.label | 1 | -| Foo.qll:4:11:4:11 | Literal | Foo.qll:4:11:4:11 | 1 | semmle.order | 22 | -| Foo.qll:4:11:4:15 | CompTerm | Foo.qll:4:11:4:11 | Literal | semmle.label | 1 | -| Foo.qll:4:11:4:15 | CompTerm | Foo.qll:4:11:4:11 | Literal | semmle.order | 22 | -| Foo.qll:4:11:4:15 | CompTerm | Foo.qll:4:13:4:13 | = | semmle.label | 2 | -| Foo.qll:4:11:4:15 | CompTerm | Foo.qll:4:13:4:13 | = | semmle.order | 25 | -| Foo.qll:4:11:4:15 | CompTerm | Foo.qll:4:15:4:15 | Literal | semmle.label | 3 | -| Foo.qll:4:11:4:15 | CompTerm | Foo.qll:4:15:4:15 | Literal | semmle.order | 27 | -| Foo.qll:4:13:4:13 | = | Foo.qll:4:13:4:13 | = | semmle.label | 1 | -| Foo.qll:4:13:4:13 | = | Foo.qll:4:13:4:13 | = | semmle.order | 25 | -| Foo.qll:4:15:4:15 | Literal | Foo.qll:4:15:4:15 | 2 | semmle.label | 1 | -| Foo.qll:4:15:4:15 | Literal | Foo.qll:4:15:4:15 | 2 | semmle.order | 27 | -| Foo.qll:6:3:6:8 | TypeExpr | Foo.qll:6:3:6:8 | string | semmle.label | 1 | -| Foo.qll:6:3:6:8 | TypeExpr | Foo.qll:6:3:6:8 | string | semmle.order | 30 | -| Foo.qll:6:3:6:8 | string | Foo.qll:6:3:6:8 | string | semmle.label | 1 | -| Foo.qll:6:3:6:8 | string | Foo.qll:6:3:6:8 | string | semmle.order | 30 | -| Foo.qll:6:3:6:38 | ClassMember | Foo.qll:6:3:6:38 | MemberPredicate | semmle.label | 1 | -| Foo.qll:6:3:6:38 | ClassMember | Foo.qll:6:3:6:38 | MemberPredicate | semmle.order | 30 | -| Foo.qll:6:3:6:38 | MemberPredicate | Foo.qll:6:3:6:8 | TypeExpr | semmle.label | 1 | -| Foo.qll:6:3:6:38 | MemberPredicate | Foo.qll:6:3:6:8 | TypeExpr | semmle.order | 30 | -| Foo.qll:6:3:6:38 | MemberPredicate | Foo.qll:6:10:6:17 | toString | semmle.label | 2 | -| Foo.qll:6:3:6:38 | MemberPredicate | Foo.qll:6:10:6:17 | toString | semmle.order | 35 | -| Foo.qll:6:3:6:38 | MemberPredicate | Foo.qll:6:18:6:18 | ( | semmle.label | 3 | -| Foo.qll:6:3:6:38 | MemberPredicate | Foo.qll:6:18:6:18 | ( | semmle.order | 36 | -| Foo.qll:6:3:6:38 | MemberPredicate | Foo.qll:6:19:6:19 | ) | semmle.label | 4 | -| Foo.qll:6:3:6:38 | MemberPredicate | Foo.qll:6:19:6:19 | ) | semmle.order | 37 | -| Foo.qll:6:3:6:38 | MemberPredicate | Foo.qll:6:21:6:38 | Body | semmle.label | 5 | -| Foo.qll:6:3:6:38 | MemberPredicate | Foo.qll:6:21:6:38 | Body | semmle.order | 38 | -| Foo.qll:6:21:6:38 | Body | Foo.qll:6:21:6:21 | { | semmle.label | 1 | -| Foo.qll:6:21:6:38 | Body | Foo.qll:6:21:6:21 | { | semmle.order | 38 | -| Foo.qll:6:21:6:38 | Body | Foo.qll:6:23:6:36 | CompTerm | semmle.label | 2 | -| Foo.qll:6:21:6:38 | Body | Foo.qll:6:23:6:36 | CompTerm | semmle.order | 40 | -| Foo.qll:6:21:6:38 | Body | Foo.qll:6:38:6:38 | } | semmle.label | 3 | -| Foo.qll:6:21:6:38 | Body | Foo.qll:6:38:6:38 | } | semmle.order | 47 | -| Foo.qll:6:23:6:28 | Variable | Foo.qll:6:23:6:28 | result | semmle.label | 1 | -| Foo.qll:6:23:6:28 | Variable | Foo.qll:6:23:6:28 | result | semmle.order | 40 | -| Foo.qll:6:23:6:36 | CompTerm | Foo.qll:6:23:6:28 | Variable | semmle.label | 1 | -| Foo.qll:6:23:6:36 | CompTerm | Foo.qll:6:23:6:28 | Variable | semmle.order | 40 | -| Foo.qll:6:23:6:36 | CompTerm | Foo.qll:6:30:6:30 | = | semmle.label | 2 | -| Foo.qll:6:23:6:36 | CompTerm | Foo.qll:6:30:6:30 | = | semmle.order | 43 | -| Foo.qll:6:23:6:36 | CompTerm | Foo.qll:6:32:6:36 | Literal | semmle.label | 3 | -| Foo.qll:6:23:6:36 | CompTerm | Foo.qll:6:32:6:36 | Literal | semmle.order | 45 | -| Foo.qll:6:30:6:30 | = | Foo.qll:6:30:6:30 | = | semmle.label | 1 | -| Foo.qll:6:30:6:30 | = | Foo.qll:6:30:6:30 | = | semmle.order | 43 | -| Foo.qll:6:32:6:36 | Literal | Foo.qll:6:32:6:36 | "Foo" | semmle.label | 1 | -| Foo.qll:6:32:6:36 | Literal | Foo.qll:6:32:6:36 | "Foo" | semmle.order | 45 | -| Foo.qll:9:1:9:5 | Annotation | Foo.qll:9:1:9:5 | query | semmle.label | 1 | -| Foo.qll:9:1:9:5 | Annotation | Foo.qll:9:1:9:5 | query | semmle.order | 49 | -| Foo.qll:9:1:11:1 | ModuleMember | Foo.qll:9:1:9:5 | Annotation | semmle.label | 1 | -| Foo.qll:9:1:11:1 | ModuleMember | Foo.qll:9:1:9:5 | Annotation | semmle.order | 49 | -| Foo.qll:9:1:11:1 | ModuleMember | Foo.qll:9:7:11:1 | ClasslessPredicate | semmle.label | 2 | -| Foo.qll:9:1:11:1 | ModuleMember | Foo.qll:9:7:11:1 | ClasslessPredicate | semmle.order | 52 | -| Foo.qll:9:7:11:1 | ClasslessPredicate | Foo.qll:9:7:9:15 | predicate | semmle.label | 1 | -| Foo.qll:9:7:11:1 | ClasslessPredicate | Foo.qll:9:7:9:15 | predicate | semmle.order | 52 | -| Foo.qll:9:7:11:1 | ClasslessPredicate | Foo.qll:9:17:9:19 | foo | semmle.label | 2 | -| Foo.qll:9:7:11:1 | ClasslessPredicate | Foo.qll:9:17:9:19 | foo | semmle.order | 54 | -| Foo.qll:9:7:11:1 | ClasslessPredicate | Foo.qll:9:20:9:20 | ( | semmle.label | 3 | -| Foo.qll:9:7:11:1 | ClasslessPredicate | Foo.qll:9:20:9:20 | ( | semmle.order | 55 | -| Foo.qll:9:7:11:1 | ClasslessPredicate | Foo.qll:9:21:9:25 | VarDecl | semmle.label | 4 | -| Foo.qll:9:7:11:1 | ClasslessPredicate | Foo.qll:9:21:9:25 | VarDecl | semmle.order | 56 | -| Foo.qll:9:7:11:1 | ClasslessPredicate | Foo.qll:9:26:9:26 | ) | semmle.label | 5 | -| Foo.qll:9:7:11:1 | ClasslessPredicate | Foo.qll:9:26:9:26 | ) | semmle.order | 61 | -| Foo.qll:9:7:11:1 | ClasslessPredicate | Foo.qll:9:28:11:1 | Body | semmle.label | 6 | -| Foo.qll:9:7:11:1 | ClasslessPredicate | Foo.qll:9:28:11:1 | Body | semmle.order | 62 | -| Foo.qll:9:21:9:23 | TypeExpr | Foo.qll:9:21:9:23 | Foo | semmle.label | 1 | -| Foo.qll:9:21:9:23 | TypeExpr | Foo.qll:9:21:9:23 | Foo | semmle.order | 56 | -| Foo.qll:9:21:9:25 | VarDecl | Foo.qll:9:21:9:23 | TypeExpr | semmle.label | 1 | -| Foo.qll:9:21:9:25 | VarDecl | Foo.qll:9:21:9:23 | TypeExpr | semmle.order | 56 | -| Foo.qll:9:21:9:25 | VarDecl | Foo.qll:9:25:9:25 | VarName | semmle.label | 2 | -| Foo.qll:9:21:9:25 | VarDecl | Foo.qll:9:25:9:25 | VarName | semmle.order | 59 | -| Foo.qll:9:25:9:25 | VarName | Foo.qll:9:25:9:25 | f | semmle.label | 1 | -| Foo.qll:9:25:9:25 | VarName | Foo.qll:9:25:9:25 | f | semmle.order | 59 | -| Foo.qll:9:28:11:1 | Body | Foo.qll:9:28:9:28 | { | semmle.label | 1 | -| Foo.qll:9:28:11:1 | Body | Foo.qll:9:28:9:28 | { | semmle.order | 62 | -| Foo.qll:9:28:11:1 | Body | Foo.qll:10:3:10:85 | CompTerm | semmle.label | 2 | -| Foo.qll:9:28:11:1 | Body | Foo.qll:10:3:10:85 | CompTerm | semmle.order | 64 | -| Foo.qll:9:28:11:1 | Body | Foo.qll:11:1:11:1 | } | semmle.label | 3 | -| Foo.qll:9:28:11:1 | Body | Foo.qll:11:1:11:1 | } | semmle.order | 119 | -| Foo.qll:10:3:10:3 | VarName | Foo.qll:10:3:10:3 | f | semmle.label | 1 | -| Foo.qll:10:3:10:3 | VarName | Foo.qll:10:3:10:3 | f | semmle.order | 64 | -| Foo.qll:10:3:10:3 | Variable | Foo.qll:10:3:10:3 | VarName | semmle.label | 1 | -| Foo.qll:10:3:10:3 | Variable | Foo.qll:10:3:10:3 | VarName | semmle.order | 64 | -| Foo.qll:10:3:10:85 | CompTerm | Foo.qll:10:3:10:3 | Variable | semmle.label | 1 | -| Foo.qll:10:3:10:85 | CompTerm | Foo.qll:10:3:10:3 | Variable | semmle.order | 64 | -| Foo.qll:10:3:10:85 | CompTerm | Foo.qll:10:5:10:5 | = | semmle.label | 2 | -| Foo.qll:10:3:10:85 | CompTerm | Foo.qll:10:5:10:5 | = | semmle.order | 68 | -| Foo.qll:10:3:10:85 | CompTerm | Foo.qll:10:7:10:85 | Aggregate | semmle.label | 3 | -| Foo.qll:10:3:10:85 | CompTerm | Foo.qll:10:7:10:85 | Aggregate | semmle.order | 70 | -| Foo.qll:10:5:10:5 | = | Foo.qll:10:5:10:5 | = | semmle.label | 1 | -| Foo.qll:10:5:10:5 | = | Foo.qll:10:5:10:5 | = | semmle.order | 68 | -| Foo.qll:10:7:10:10 | rank | Foo.qll:10:7:10:10 | rank | semmle.label | 1 | -| Foo.qll:10:7:10:10 | rank | Foo.qll:10:7:10:10 | rank | semmle.order | 70 | -| Foo.qll:10:7:10:85 | Aggregate | Foo.qll:10:7:10:10 | rank | semmle.label | 1 | -| Foo.qll:10:7:10:85 | Aggregate | Foo.qll:10:7:10:10 | rank | semmle.order | 70 | -| Foo.qll:10:7:10:85 | Aggregate | Foo.qll:10:11:10:11 | [ | semmle.label | 2 | -| Foo.qll:10:7:10:85 | Aggregate | Foo.qll:10:11:10:11 | [ | semmle.order | 73 | -| Foo.qll:10:7:10:85 | Aggregate | Foo.qll:10:12:10:12 | Literal | semmle.label | 3 | -| Foo.qll:10:7:10:85 | Aggregate | Foo.qll:10:12:10:12 | Literal | semmle.order | 74 | -| Foo.qll:10:7:10:85 | Aggregate | Foo.qll:10:13:10:13 | ] | semmle.label | 4 | -| Foo.qll:10:7:10:85 | Aggregate | Foo.qll:10:13:10:13 | ] | semmle.order | 76 | -| Foo.qll:10:7:10:85 | Aggregate | Foo.qll:10:14:10:14 | ( | semmle.label | 5 | -| Foo.qll:10:7:10:85 | Aggregate | Foo.qll:10:14:10:14 | ( | semmle.order | 77 | -| Foo.qll:10:7:10:85 | Aggregate | Foo.qll:10:15:10:84 | FullAggregateBody | semmle.label | 6 | -| Foo.qll:10:7:10:85 | Aggregate | Foo.qll:10:15:10:84 | FullAggregateBody | semmle.order | 78 | -| Foo.qll:10:7:10:85 | Aggregate | Foo.qll:10:85:10:85 | ) | semmle.label | 7 | -| Foo.qll:10:7:10:85 | Aggregate | Foo.qll:10:85:10:85 | ) | semmle.order | 118 | -| Foo.qll:10:12:10:12 | Literal | Foo.qll:10:12:10:12 | 2 | semmle.label | 1 | -| Foo.qll:10:12:10:12 | Literal | Foo.qll:10:12:10:12 | 2 | semmle.order | 74 | -| Foo.qll:10:15:10:17 | TypeExpr | Foo.qll:10:15:10:17 | Foo | semmle.label | 1 | -| Foo.qll:10:15:10:17 | TypeExpr | Foo.qll:10:15:10:17 | Foo | semmle.order | 78 | -| Foo.qll:10:15:10:23 | VarDecl | Foo.qll:10:15:10:17 | TypeExpr | semmle.label | 1 | -| Foo.qll:10:15:10:23 | VarDecl | Foo.qll:10:15:10:17 | TypeExpr | semmle.order | 78 | -| Foo.qll:10:15:10:23 | VarDecl | Foo.qll:10:19:10:23 | VarName | semmle.label | 2 | -| Foo.qll:10:15:10:23 | VarDecl | Foo.qll:10:19:10:23 | VarName | semmle.order | 82 | -| Foo.qll:10:15:10:84 | FullAggregateBody | Foo.qll:10:15:10:23 | VarDecl | semmle.label | 1 | -| Foo.qll:10:15:10:84 | FullAggregateBody | Foo.qll:10:15:10:23 | VarDecl | semmle.order | 78 | -| Foo.qll:10:15:10:84 | FullAggregateBody | Foo.qll:10:25:10:25 | \| | semmle.label | 2 | -| Foo.qll:10:15:10:84 | FullAggregateBody | Foo.qll:10:25:10:25 | \| | semmle.order | 84 | -| Foo.qll:10:15:10:84 | FullAggregateBody | Foo.qll:10:27:10:50 | CompTerm | semmle.label | 3 | -| Foo.qll:10:15:10:84 | FullAggregateBody | Foo.qll:10:27:10:50 | CompTerm | semmle.order | 85 | -| Foo.qll:10:15:10:84 | FullAggregateBody | Foo.qll:10:52:10:52 | \| | semmle.label | 4 | -| Foo.qll:10:15:10:84 | FullAggregateBody | Foo.qll:10:52:10:52 | \| | semmle.order | 99 | -| Foo.qll:10:15:10:84 | FullAggregateBody | Foo.qll:10:54:10:58 | AsExprs | semmle.label | 5 | -| Foo.qll:10:15:10:84 | FullAggregateBody | Foo.qll:10:54:10:58 | AsExprs | semmle.order | 100 | -| Foo.qll:10:15:10:84 | FullAggregateBody | Foo.qll:10:60:10:84 | OrderBys | semmle.label | 6 | -| Foo.qll:10:15:10:84 | FullAggregateBody | Foo.qll:10:60:10:84 | OrderBys | semmle.order | 105 | -| Foo.qll:10:19:10:23 | VarName | Foo.qll:10:19:10:23 | inner | semmle.label | 1 | -| Foo.qll:10:19:10:23 | VarName | Foo.qll:10:19:10:23 | inner | semmle.order | 82 | -| Foo.qll:10:27:10:31 | VarName | Foo.qll:10:27:10:31 | inner | semmle.label | 1 | -| Foo.qll:10:27:10:31 | VarName | Foo.qll:10:27:10:31 | inner | semmle.order | 85 | -| Foo.qll:10:27:10:31 | Variable | Foo.qll:10:27:10:31 | VarName | semmle.label | 1 | -| Foo.qll:10:27:10:31 | Variable | Foo.qll:10:27:10:31 | VarName | semmle.order | 85 | -| Foo.qll:10:27:10:42 | QualifiedExpr | Foo.qll:10:27:10:31 | Variable | semmle.label | 1 | -| Foo.qll:10:27:10:42 | QualifiedExpr | Foo.qll:10:27:10:31 | Variable | semmle.order | 85 | -| Foo.qll:10:27:10:42 | QualifiedExpr | Foo.qll:10:32:10:32 | . | semmle.label | 2 | -| Foo.qll:10:27:10:42 | QualifiedExpr | Foo.qll:10:32:10:32 | . | semmle.order | 90 | -| Foo.qll:10:27:10:42 | QualifiedExpr | Foo.qll:10:33:10:42 | QualifiedRhs | semmle.label | 3 | -| Foo.qll:10:27:10:42 | QualifiedExpr | Foo.qll:10:33:10:42 | QualifiedRhs | semmle.order | 91 | -| Foo.qll:10:27:10:50 | CompTerm | Foo.qll:10:27:10:42 | QualifiedExpr | semmle.label | 1 | -| Foo.qll:10:27:10:50 | CompTerm | Foo.qll:10:27:10:42 | QualifiedExpr | semmle.order | 85 | -| Foo.qll:10:27:10:50 | CompTerm | Foo.qll:10:44:10:44 | = | semmle.label | 2 | -| Foo.qll:10:27:10:50 | CompTerm | Foo.qll:10:44:10:44 | = | semmle.order | 95 | -| Foo.qll:10:27:10:50 | CompTerm | Foo.qll:10:46:10:50 | Literal | semmle.label | 3 | -| Foo.qll:10:27:10:50 | CompTerm | Foo.qll:10:46:10:50 | Literal | semmle.order | 97 | -| Foo.qll:10:33:10:42 | QualifiedRhs | Foo.qll:10:33:10:40 | toString | semmle.label | 1 | -| Foo.qll:10:33:10:42 | QualifiedRhs | Foo.qll:10:33:10:40 | toString | semmle.order | 91 | -| Foo.qll:10:33:10:42 | QualifiedRhs | Foo.qll:10:41:10:41 | ( | semmle.label | 2 | -| Foo.qll:10:33:10:42 | QualifiedRhs | Foo.qll:10:41:10:41 | ( | semmle.order | 93 | -| Foo.qll:10:33:10:42 | QualifiedRhs | Foo.qll:10:42:10:42 | ) | semmle.label | 3 | -| Foo.qll:10:33:10:42 | QualifiedRhs | Foo.qll:10:42:10:42 | ) | semmle.order | 94 | -| Foo.qll:10:44:10:44 | = | Foo.qll:10:44:10:44 | = | semmle.label | 1 | -| Foo.qll:10:44:10:44 | = | Foo.qll:10:44:10:44 | = | semmle.order | 95 | -| Foo.qll:10:46:10:50 | Literal | Foo.qll:10:46:10:50 | "foo" | semmle.label | 1 | -| Foo.qll:10:46:10:50 | Literal | Foo.qll:10:46:10:50 | "foo" | semmle.order | 97 | -| Foo.qll:10:54:10:58 | AsExpr | Foo.qll:10:54:10:58 | Variable | semmle.label | 1 | -| Foo.qll:10:54:10:58 | AsExpr | Foo.qll:10:54:10:58 | Variable | semmle.order | 100 | -| Foo.qll:10:54:10:58 | AsExprs | Foo.qll:10:54:10:58 | AsExpr | semmle.label | 1 | -| Foo.qll:10:54:10:58 | AsExprs | Foo.qll:10:54:10:58 | AsExpr | semmle.order | 100 | -| Foo.qll:10:54:10:58 | VarName | Foo.qll:10:54:10:58 | inner | semmle.label | 1 | -| Foo.qll:10:54:10:58 | VarName | Foo.qll:10:54:10:58 | inner | semmle.order | 100 | -| Foo.qll:10:54:10:58 | Variable | Foo.qll:10:54:10:58 | VarName | semmle.label | 1 | -| Foo.qll:10:54:10:58 | Variable | Foo.qll:10:54:10:58 | VarName | semmle.order | 100 | -| Foo.qll:10:60:10:84 | OrderBys | Foo.qll:10:60:10:64 | order | semmle.label | 1 | -| Foo.qll:10:60:10:84 | OrderBys | Foo.qll:10:60:10:64 | order | semmle.order | 105 | -| Foo.qll:10:60:10:84 | OrderBys | Foo.qll:10:66:10:67 | by | semmle.label | 2 | -| Foo.qll:10:60:10:84 | OrderBys | Foo.qll:10:66:10:67 | by | semmle.order | 107 | -| Foo.qll:10:60:10:84 | OrderBys | Foo.qll:10:69:10:84 | OrderBy | semmle.label | 3 | -| Foo.qll:10:60:10:84 | OrderBys | Foo.qll:10:69:10:84 | OrderBy | semmle.order | 108 | -| Foo.qll:10:69:10:73 | VarName | Foo.qll:10:69:10:73 | inner | semmle.label | 1 | -| Foo.qll:10:69:10:73 | VarName | Foo.qll:10:69:10:73 | inner | semmle.order | 108 | -| Foo.qll:10:69:10:73 | Variable | Foo.qll:10:69:10:73 | VarName | semmle.label | 1 | -| Foo.qll:10:69:10:73 | Variable | Foo.qll:10:69:10:73 | VarName | semmle.order | 108 | -| Foo.qll:10:69:10:84 | OrderBy | Foo.qll:10:69:10:84 | QualifiedExpr | semmle.label | 1 | -| Foo.qll:10:69:10:84 | OrderBy | Foo.qll:10:69:10:84 | QualifiedExpr | semmle.order | 108 | -| Foo.qll:10:69:10:84 | QualifiedExpr | Foo.qll:10:69:10:73 | Variable | semmle.label | 1 | -| Foo.qll:10:69:10:84 | QualifiedExpr | Foo.qll:10:69:10:73 | Variable | semmle.order | 108 | -| Foo.qll:10:69:10:84 | QualifiedExpr | Foo.qll:10:74:10:74 | . | semmle.label | 2 | -| Foo.qll:10:69:10:84 | QualifiedExpr | Foo.qll:10:74:10:74 | . | semmle.order | 113 | -| Foo.qll:10:69:10:84 | QualifiedExpr | Foo.qll:10:75:10:84 | QualifiedRhs | semmle.label | 3 | -| Foo.qll:10:69:10:84 | QualifiedExpr | Foo.qll:10:75:10:84 | QualifiedRhs | semmle.order | 114 | -| Foo.qll:10:75:10:84 | QualifiedRhs | Foo.qll:10:75:10:82 | toString | semmle.label | 1 | -| Foo.qll:10:75:10:84 | QualifiedRhs | Foo.qll:10:75:10:82 | toString | semmle.order | 114 | -| Foo.qll:10:75:10:84 | QualifiedRhs | Foo.qll:10:83:10:83 | ( | semmle.label | 2 | -| Foo.qll:10:75:10:84 | QualifiedRhs | Foo.qll:10:83:10:83 | ( | semmle.order | 116 | -| Foo.qll:10:75:10:84 | QualifiedRhs | Foo.qll:10:84:10:84 | ) | semmle.label | 3 | -| Foo.qll:10:75:10:84 | QualifiedRhs | Foo.qll:10:84:10:84 | ) | semmle.order | 117 | -| printAst.ql:1:1:1:25 | ImportDirective | printAst.ql:1:1:1:6 | import | semmle.label | 1 | -| printAst.ql:1:1:1:25 | ImportDirective | printAst.ql:1:1:1:6 | import | semmle.order | 120 | -| printAst.ql:1:1:1:25 | ImportDirective | printAst.ql:1:8:1:25 | ImportModuleExpr | semmle.label | 2 | -| printAst.ql:1:1:1:25 | ImportDirective | printAst.ql:1:8:1:25 | ImportModuleExpr | semmle.order | 124 | -| printAst.ql:1:1:1:25 | ModuleMember | printAst.ql:1:1:1:25 | ImportDirective | semmle.label | 1 | -| printAst.ql:1:1:1:25 | ModuleMember | printAst.ql:1:1:1:25 | ImportDirective | semmle.order | 120 | -| printAst.ql:1:1:1:26 | Ql | printAst.ql:1:1:1:25 | ModuleMember | semmle.label | 1 | -| printAst.ql:1:1:1:26 | Ql | printAst.ql:1:1:1:25 | ModuleMember | semmle.order | 120 | -| printAst.ql:1:8:1:25 | ImportModuleExpr | printAst.ql:1:8:1:25 | QualModuleExpr | semmle.label | 1 | -| printAst.ql:1:8:1:25 | ImportModuleExpr | printAst.ql:1:8:1:25 | QualModuleExpr | semmle.order | 124 | -| printAst.ql:1:8:1:25 | QualModuleExpr | printAst.ql:1:8:1:16 | codeql_ql | semmle.label | 1 | -| printAst.ql:1:8:1:25 | QualModuleExpr | printAst.ql:1:8:1:16 | codeql_ql | semmle.order | 124 | -| printAst.ql:1:8:1:25 | QualModuleExpr | printAst.ql:1:17:1:17 | . | semmle.label | 2 | -| printAst.ql:1:8:1:25 | QualModuleExpr | printAst.ql:1:17:1:17 | . | semmle.order | 127 | -| printAst.ql:1:8:1:25 | QualModuleExpr | printAst.ql:1:18:1:25 | printAst | semmle.label | 3 | -| printAst.ql:1:8:1:25 | QualModuleExpr | printAst.ql:1:18:1:25 | printAst | semmle.order | 128 | +| Foo.qll:3:1:7:1 | Class | Foo.qll:3:19:3:22 | Type | semmle.label | 1 | +| Foo.qll:3:1:7:1 | Class | Foo.qll:3:19:3:22 | Type | semmle.order | 3 | +| Foo.qll:3:1:7:1 | Class | Foo.qll:4:3:4:17 | CharPred | semmle.label | 2 | +| Foo.qll:3:1:7:1 | Class | Foo.qll:4:3:4:17 | CharPred | semmle.order | 4 | +| Foo.qll:3:1:7:1 | Class | Foo.qll:6:3:6:38 | ClassPredicate | semmle.label | 3 | +| Foo.qll:3:1:7:1 | Class | Foo.qll:6:3:6:38 | ClassPredicate | semmle.order | 9 | +| Foo.qll:4:3:4:17 | CharPred | Foo.qll:4:11:4:15 | ComparisonFormula | semmle.label | 1 | +| Foo.qll:4:3:4:17 | CharPred | Foo.qll:4:11:4:15 | ComparisonFormula | semmle.order | 5 | +| Foo.qll:4:11:4:15 | ComparisonFormula | Foo.qll:4:11:4:11 | Integer | semmle.label | 1 | +| Foo.qll:4:11:4:15 | ComparisonFormula | Foo.qll:4:11:4:11 | Integer | semmle.order | 5 | +| Foo.qll:4:11:4:15 | ComparisonFormula | Foo.qll:4:13:4:13 | ComparisonOp | semmle.label | 2 | +| Foo.qll:4:11:4:15 | ComparisonFormula | Foo.qll:4:13:4:13 | ComparisonOp | semmle.order | 7 | +| Foo.qll:4:11:4:15 | ComparisonFormula | Foo.qll:4:15:4:15 | Integer | semmle.label | 3 | +| Foo.qll:4:11:4:15 | ComparisonFormula | Foo.qll:4:15:4:15 | Integer | semmle.order | 8 | +| Foo.qll:6:3:6:38 | ClassPredicate | Foo.qll:6:3:6:8 | Type | semmle.label | 1 | +| Foo.qll:6:3:6:38 | ClassPredicate | Foo.qll:6:3:6:8 | Type | semmle.order | 9 | +| Foo.qll:6:3:6:38 | ClassPredicate | Foo.qll:6:23:6:36 | ComparisonFormula | semmle.label | 2 | +| Foo.qll:6:3:6:38 | ClassPredicate | Foo.qll:6:23:6:36 | ComparisonFormula | semmle.order | 11 | +| Foo.qll:6:23:6:36 | ComparisonFormula | Foo.qll:6:23:6:28 | Identifier | semmle.label | 1 | +| Foo.qll:6:23:6:36 | ComparisonFormula | Foo.qll:6:23:6:28 | Identifier | semmle.order | 11 | +| Foo.qll:6:23:6:36 | ComparisonFormula | Foo.qll:6:30:6:30 | ComparisonOp | semmle.label | 2 | +| Foo.qll:6:23:6:36 | ComparisonFormula | Foo.qll:6:30:6:30 | ComparisonOp | semmle.order | 13 | +| Foo.qll:6:23:6:36 | ComparisonFormula | Foo.qll:6:32:6:36 | String | semmle.label | 3 | +| Foo.qll:6:23:6:36 | ComparisonFormula | Foo.qll:6:32:6:36 | String | semmle.order | 14 | +| Foo.qll:9:7:11:1 | ClasslessPredicate | Foo.qll:9:21:9:25 | VarDecl | semmle.label | 1 | +| Foo.qll:9:7:11:1 | ClasslessPredicate | Foo.qll:9:21:9:25 | VarDecl | semmle.order | 16 | +| Foo.qll:9:7:11:1 | ClasslessPredicate | Foo.qll:10:3:10:85 | ComparisonFormula | semmle.label | 2 | +| Foo.qll:9:7:11:1 | ClasslessPredicate | Foo.qll:10:3:10:85 | ComparisonFormula | semmle.order | 18 | +| Foo.qll:9:21:9:25 | VarDecl | Foo.qll:9:21:9:23 | Type | semmle.label | 1 | +| Foo.qll:9:21:9:25 | VarDecl | Foo.qll:9:21:9:23 | Type | semmle.order | 16 | +| Foo.qll:10:3:10:85 | ComparisonFormula | Foo.qll:10:3:10:3 | Identifier | semmle.label | 1 | +| Foo.qll:10:3:10:85 | ComparisonFormula | Foo.qll:10:3:10:3 | Identifier | semmle.order | 18 | +| Foo.qll:10:3:10:85 | ComparisonFormula | Foo.qll:10:5:10:5 | ComparisonOp | semmle.label | 2 | +| Foo.qll:10:3:10:85 | ComparisonFormula | Foo.qll:10:5:10:5 | ComparisonOp | semmle.order | 20 | +| Foo.qll:10:3:10:85 | ComparisonFormula | Foo.qll:10:7:10:85 | Rank | semmle.label | 3 | +| Foo.qll:10:3:10:85 | ComparisonFormula | Foo.qll:10:7:10:85 | Rank | semmle.order | 21 | +| Foo.qll:10:7:10:85 | Rank | Foo.qll:10:12:10:12 | Integer | semmle.label | 1 | +| Foo.qll:10:7:10:85 | Rank | Foo.qll:10:12:10:12 | Integer | semmle.order | 22 | +| Foo.qll:10:7:10:85 | Rank | Foo.qll:10:15:10:23 | VarDecl | semmle.label | 2 | +| Foo.qll:10:7:10:85 | Rank | Foo.qll:10:15:10:23 | VarDecl | semmle.order | 23 | +| Foo.qll:10:7:10:85 | Rank | Foo.qll:10:27:10:50 | ComparisonFormula | semmle.label | 3 | +| Foo.qll:10:7:10:85 | Rank | Foo.qll:10:27:10:50 | ComparisonFormula | semmle.order | 25 | +| Foo.qll:10:7:10:85 | Rank | Foo.qll:10:54:10:58 | AsExpr | semmle.label | 4 | +| Foo.qll:10:7:10:85 | Rank | Foo.qll:10:54:10:58 | AsExpr | semmle.order | 30 | +| Foo.qll:10:7:10:85 | Rank | Foo.qll:10:69:10:84 | MemberCall | semmle.label | 5 | +| Foo.qll:10:7:10:85 | Rank | Foo.qll:10:69:10:84 | MemberCall | semmle.order | 32 | +| Foo.qll:10:15:10:23 | VarDecl | Foo.qll:10:15:10:17 | Type | semmle.label | 1 | +| Foo.qll:10:15:10:23 | VarDecl | Foo.qll:10:15:10:17 | Type | semmle.order | 23 | +| Foo.qll:10:27:10:42 | MemberCall | Foo.qll:10:27:10:31 | Identifier | semmle.label | 1 | +| Foo.qll:10:27:10:42 | MemberCall | Foo.qll:10:27:10:31 | Identifier | semmle.order | 25 | +| Foo.qll:10:27:10:50 | ComparisonFormula | Foo.qll:10:27:10:42 | MemberCall | semmle.label | 1 | +| Foo.qll:10:27:10:50 | ComparisonFormula | Foo.qll:10:27:10:42 | MemberCall | semmle.order | 25 | +| Foo.qll:10:27:10:50 | ComparisonFormula | Foo.qll:10:44:10:44 | ComparisonOp | semmle.label | 2 | +| Foo.qll:10:27:10:50 | ComparisonFormula | Foo.qll:10:44:10:44 | ComparisonOp | semmle.order | 28 | +| Foo.qll:10:27:10:50 | ComparisonFormula | Foo.qll:10:46:10:50 | String | semmle.label | 3 | +| Foo.qll:10:27:10:50 | ComparisonFormula | Foo.qll:10:46:10:50 | String | semmle.order | 29 | +| Foo.qll:10:54:10:58 | AsExpr | Foo.qll:10:54:10:58 | Identifier | semmle.label | 1 | +| Foo.qll:10:54:10:58 | AsExpr | Foo.qll:10:54:10:58 | Identifier | semmle.order | 30 | +| Foo.qll:10:69:10:84 | MemberCall | Foo.qll:10:69:10:73 | Identifier | semmle.label | 1 | +| Foo.qll:10:69:10:84 | MemberCall | Foo.qll:10:69:10:73 | Identifier | semmle.order | 32 | +| Foo.qll:13:1:25:1 | ClasslessPredicate | Foo.qll:13:17:13:21 | VarDecl | semmle.label | 1 | +| Foo.qll:13:1:25:1 | ClasslessPredicate | Foo.qll:13:17:13:21 | VarDecl | semmle.order | 35 | +| Foo.qll:13:1:25:1 | ClasslessPredicate | Foo.qll:14:3:24:7 | Disjunction | semmle.label | 2 | +| Foo.qll:13:1:25:1 | ClasslessPredicate | Foo.qll:14:3:24:7 | Disjunction | semmle.order | 37 | +| Foo.qll:13:17:13:21 | VarDecl | Foo.qll:13:17:13:19 | Type | semmle.label | 1 | +| Foo.qll:13:17:13:21 | VarDecl | Foo.qll:13:17:13:19 | Type | semmle.order | 35 | +| Foo.qll:14:3:14:10 | PredicateCall | Foo.qll:14:9:14:9 | Identifier | semmle.label | 1 | +| Foo.qll:14:3:14:10 | PredicateCall | Foo.qll:14:9:14:9 | Identifier | semmle.order | 43 | +| Foo.qll:14:3:16:29 | Disjunction | Foo.qll:14:3:14:10 | PredicateCall | semmle.label | 1 | +| Foo.qll:14:3:16:29 | Disjunction | Foo.qll:14:3:14:10 | PredicateCall | semmle.order | 37 | +| Foo.qll:14:3:16:29 | Disjunction | Foo.qll:16:3:16:29 | ComparisonFormula | semmle.label | 2 | +| Foo.qll:14:3:16:29 | Disjunction | Foo.qll:16:3:16:29 | ComparisonFormula | semmle.order | 44 | +| Foo.qll:14:3:18:28 | Disjunction | Foo.qll:14:3:16:29 | Disjunction | semmle.label | 1 | +| Foo.qll:14:3:18:28 | Disjunction | Foo.qll:14:3:16:29 | Disjunction | semmle.order | 37 | +| Foo.qll:14:3:18:28 | Disjunction | Foo.qll:18:3:18:28 | ComparisonFormula | semmle.label | 2 | +| Foo.qll:14:3:18:28 | Disjunction | Foo.qll:18:3:18:28 | ComparisonFormula | semmle.order | 52 | +| Foo.qll:14:3:20:13 | Disjunction | Foo.qll:14:3:18:28 | Disjunction | semmle.label | 1 | +| Foo.qll:14:3:20:13 | Disjunction | Foo.qll:14:3:18:28 | Disjunction | semmle.order | 37 | +| Foo.qll:14:3:20:13 | Disjunction | Foo.qll:20:3:20:13 | ComparisonFormula | semmle.label | 2 | +| Foo.qll:14:3:20:13 | Disjunction | Foo.qll:20:3:20:13 | ComparisonFormula | semmle.order | 59 | +| Foo.qll:14:3:22:16 | Disjunction | Foo.qll:14:3:20:13 | Disjunction | semmle.label | 1 | +| Foo.qll:14:3:22:16 | Disjunction | Foo.qll:14:3:20:13 | Disjunction | semmle.order | 37 | +| Foo.qll:14:3:22:16 | Disjunction | Foo.qll:22:3:22:16 | ComparisonFormula | semmle.label | 2 | +| Foo.qll:14:3:22:16 | Disjunction | Foo.qll:22:3:22:16 | ComparisonFormula | semmle.order | 65 | +| Foo.qll:14:3:24:7 | Disjunction | Foo.qll:14:3:22:16 | Disjunction | semmle.label | 1 | +| Foo.qll:14:3:24:7 | Disjunction | Foo.qll:14:3:22:16 | Disjunction | semmle.order | 37 | +| Foo.qll:14:3:24:7 | Disjunction | Foo.qll:24:3:24:7 | AnyCall | semmle.label | 2 | +| Foo.qll:14:3:24:7 | Disjunction | Foo.qll:24:3:24:7 | AnyCall | semmle.order | 71 | +| Foo.qll:16:3:16:29 | ComparisonFormula | Foo.qll:16:3:16:7 | String | semmle.label | 1 | +| Foo.qll:16:3:16:29 | ComparisonFormula | Foo.qll:16:3:16:7 | String | semmle.order | 44 | +| Foo.qll:16:3:16:29 | ComparisonFormula | Foo.qll:16:9:16:9 | ComparisonOp | semmle.label | 2 | +| Foo.qll:16:3:16:29 | ComparisonFormula | Foo.qll:16:9:16:9 | ComparisonOp | semmle.order | 46 | +| Foo.qll:16:3:16:29 | ComparisonFormula | Foo.qll:16:11:16:29 | MemberCall | semmle.label | 3 | +| Foo.qll:16:3:16:29 | ComparisonFormula | Foo.qll:16:11:16:29 | MemberCall | semmle.order | 47 | +| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:11:16:11 | Identifier | semmle.label | 1 | +| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:11:16:11 | Identifier | semmle.order | 47 | +| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:22:16:22 | Integer | semmle.label | 2 | +| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:22:16:22 | Integer | semmle.order | 49 | +| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:25:16:25 | Integer | semmle.label | 3 | +| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:25:16:25 | Integer | semmle.order | 50 | +| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:28:16:28 | Integer | semmle.label | 4 | +| Foo.qll:16:11:16:29 | MemberCall | Foo.qll:16:28:16:28 | Integer | semmle.order | 51 | +| Foo.qll:18:3:18:9 | InlineCast | Foo.qll:18:3:18:3 | Identifier | semmle.label | 1 | +| Foo.qll:18:3:18:9 | InlineCast | Foo.qll:18:3:18:3 | Identifier | semmle.order | 52 | +| Foo.qll:18:3:18:9 | InlineCast | Foo.qll:18:6:18:8 | Type | semmle.label | 2 | +| Foo.qll:18:3:18:9 | InlineCast | Foo.qll:18:6:18:8 | Type | semmle.order | 56 | +| Foo.qll:18:3:18:20 | MemberCall | Foo.qll:18:3:18:9 | InlineCast | semmle.label | 1 | +| Foo.qll:18:3:18:20 | MemberCall | Foo.qll:18:3:18:9 | InlineCast | semmle.order | 52 | +| Foo.qll:18:3:18:28 | ComparisonFormula | Foo.qll:18:3:18:20 | MemberCall | semmle.label | 1 | +| Foo.qll:18:3:18:28 | ComparisonFormula | Foo.qll:18:3:18:20 | MemberCall | semmle.order | 52 | +| Foo.qll:18:3:18:28 | ComparisonFormula | Foo.qll:18:22:18:22 | ComparisonOp | semmle.label | 2 | +| Foo.qll:18:3:18:28 | ComparisonFormula | Foo.qll:18:22:18:22 | ComparisonOp | semmle.order | 57 | +| Foo.qll:18:3:18:28 | ComparisonFormula | Foo.qll:18:24:18:28 | String | semmle.label | 3 | +| Foo.qll:18:3:18:28 | ComparisonFormula | Foo.qll:18:24:18:28 | String | semmle.order | 58 | +| Foo.qll:20:3:20:9 | InlineCast | Foo.qll:20:3:20:3 | Identifier | semmle.label | 1 | +| Foo.qll:20:3:20:9 | InlineCast | Foo.qll:20:3:20:3 | Identifier | semmle.order | 59 | +| Foo.qll:20:3:20:9 | InlineCast | Foo.qll:20:6:20:8 | Type | semmle.label | 2 | +| Foo.qll:20:3:20:9 | InlineCast | Foo.qll:20:6:20:8 | Type | semmle.order | 62 | +| Foo.qll:20:3:20:13 | ComparisonFormula | Foo.qll:20:3:20:9 | InlineCast | semmle.label | 1 | +| Foo.qll:20:3:20:13 | ComparisonFormula | Foo.qll:20:3:20:9 | InlineCast | semmle.order | 59 | +| Foo.qll:20:3:20:13 | ComparisonFormula | Foo.qll:20:11:20:11 | ComparisonOp | semmle.label | 2 | +| Foo.qll:20:3:20:13 | ComparisonFormula | Foo.qll:20:11:20:11 | ComparisonOp | semmle.order | 63 | +| Foo.qll:20:3:20:13 | ComparisonFormula | Foo.qll:20:13:20:13 | Identifier | semmle.label | 3 | +| Foo.qll:20:3:20:13 | ComparisonFormula | Foo.qll:20:13:20:13 | Identifier | semmle.order | 64 | +| Foo.qll:22:3:22:16 | ComparisonFormula | Foo.qll:22:3:22:3 | Identifier | semmle.label | 1 | +| Foo.qll:22:3:22:16 | ComparisonFormula | Foo.qll:22:3:22:3 | Identifier | semmle.order | 65 | +| Foo.qll:22:3:22:16 | ComparisonFormula | Foo.qll:22:5:22:5 | ComparisonOp | semmle.label | 2 | +| Foo.qll:22:3:22:16 | ComparisonFormula | Foo.qll:22:5:22:5 | ComparisonOp | semmle.order | 67 | +| Foo.qll:22:3:22:16 | ComparisonFormula | Foo.qll:22:7:22:16 | Aggregate[any] | semmle.label | 3 | +| Foo.qll:22:3:22:16 | ComparisonFormula | Foo.qll:22:7:22:16 | Aggregate[any] | semmle.order | 68 | +| Foo.qll:22:7:22:16 | Aggregate[any] | Foo.qll:22:11:22:15 | VarDecl | semmle.label | 1 | +| Foo.qll:22:7:22:16 | Aggregate[any] | Foo.qll:22:11:22:15 | VarDecl | semmle.order | 69 | +| Foo.qll:22:11:22:15 | VarDecl | Foo.qll:22:11:22:13 | Type | semmle.label | 1 | +| Foo.qll:22:11:22:15 | VarDecl | Foo.qll:22:11:22:13 | Type | semmle.order | 69 | graphProperties | semmle.graphKind | tree | diff --git a/ql/test/printAst/printAst.ql b/ql/test/printAst/printAst.ql index 5be171203f8..ba70af634ed 100644 --- a/ql/test/printAst/printAst.ql +++ b/ql/test/printAst/printAst.ql @@ -1 +1 @@ -import codeql_ql.printAst +import codeql_ql.printAstAst