From 3addd03c29b50dd4f6d5593181de5b4775775d39 Mon Sep 17 00:00:00 2001 From: Erik Krogh Kristensen Date: Wed, 26 May 2021 12:22:08 +0000 Subject: [PATCH 1/4] insert placeholder (that compiles) in `localReferences.ql` --- ql/src/ide-contextual-queries/localReferences.ql | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ql/src/ide-contextual-queries/localReferences.ql b/ql/src/ide-contextual-queries/localReferences.ql index 252cc1a22a6f..86d66f84d4d3 100644 --- a/ql/src/ide-contextual-queries/localReferences.ql +++ b/ql/src/ide-contextual-queries/localReferences.ql @@ -8,14 +8,13 @@ */ import codeql.IDEContextual -import codeql_ql.AST -import codeql_ql.ast.Variable +import codeql_ql.ast.internal.TreeSitter::Generated external string selectedSourceFile(); from AstNode e, Variable def, string kind where - e = def.getAnAccess() and + none() and // e = def.getAnAccess() and // TODO: Get binding to work. kind = "local variable" and def.getLocation().getFile() = getFileBySourceArchiveName(selectedSourceFile()) select e, def, kind From 4ca756ddf9ce9ab549c93fb8106d8cd187fe6e6c Mon Sep 17 00:00:00 2001 From: Erik Krogh Kristensen Date: Wed, 26 May 2021 12:28:42 +0000 Subject: [PATCH 2/4] insert placeholder (that compiles) in `localDefinitions.ql` --- ql/src/ide-contextual-queries/localDefinitions.ql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ql/src/ide-contextual-queries/localDefinitions.ql b/ql/src/ide-contextual-queries/localDefinitions.ql index 1b31fa100cc3..905a4d5cbc03 100644 --- a/ql/src/ide-contextual-queries/localDefinitions.ql +++ b/ql/src/ide-contextual-queries/localDefinitions.ql @@ -8,13 +8,13 @@ */ import codeql.IDEContextual -import codeql_ql.AST +import codeql_ql.ast.internal.TreeSitter::Generated external string selectedSourceFile(); from AstNode e, Variable def, string kind where - e = def.getAnAccess() and + none() and // e = def.getAnAccess() and // TODO: Get binding to work. kind = "local variable" and e.getLocation().getFile() = getFileBySourceArchiveName(selectedSourceFile()) select e, def, kind From a015b9499af67dc224b194ff6fd9ba28d86fef4d Mon Sep 17 00:00:00 2001 From: Erik Krogh Kristensen Date: Wed, 26 May 2021 12:38:21 +0000 Subject: [PATCH 3/4] add test for the printAst query --- ql/test/printAst/printAst.expected | 261 +++++++++++++++++++++++++++++ ql/test/printAst/printAst.ql | 6 + 2 files changed, 267 insertions(+) create mode 100644 ql/test/printAst/printAst.expected create mode 100644 ql/test/printAst/printAst.ql diff --git a/ql/test/printAst/printAst.expected b/ql/test/printAst/printAst.expected new file mode 100644 index 000000000000..ee19c44e70aa --- /dev/null +++ b/ql/test/printAst/printAst.expected @@ -0,0 +1,261 @@ +WARNING: Unused predicate foobar (printAst.ql:3,11-17) +nodes +| printAst.ql:1:1:1:6 | import | semmle.label | [ReservedWord] import | +| printAst.ql:1:1:1:6 | import | semmle.order | 1 | +| printAst.ql:1:1:1:25 | ImportDirective | semmle.label | [ImportDirective] ImportDirective | +| printAst.ql:1:1:1:25 | ImportDirective | semmle.order | 1 | +| printAst.ql:1:1:1:25 | ModuleMember | semmle.label | [ModuleMember] ModuleMember | +| printAst.ql:1:1:1:25 | ModuleMember | semmle.order | 1 | +| printAst.ql:1:1:6:2 | Ql | semmle.label | [Ql] Ql | +| printAst.ql:1:1:6:2 | Ql | semmle.order | 1 | +| printAst.ql:1:8:1:16 | codeql_ql | semmle.label | [SimpleId] codeql_ql | +| printAst.ql:1:8:1:16 | codeql_ql | semmle.order | 5 | +| printAst.ql:1:8:1:25 | ImportModuleExpr | semmle.label | [ImportModuleExpr] ImportModuleExpr | +| printAst.ql:1:8:1:25 | ImportModuleExpr | semmle.order | 5 | +| printAst.ql:1:8:1:25 | QualModuleExpr | semmle.label | [QualModuleExpr] QualModuleExpr | +| printAst.ql:1:8:1:25 | QualModuleExpr | semmle.order | 5 | +| printAst.ql:1:17:1:17 | . | semmle.label | [ReservedWord] . | +| printAst.ql:1:17:1:17 | . | semmle.order | 8 | +| printAst.ql:1:18:1:25 | printAst | semmle.label | [SimpleId] printAst | +| printAst.ql:1:18:1:25 | printAst | semmle.order | 9 | +| printAst.ql:3:1:3:9 | predicate | semmle.label | [Predicate] predicate | +| printAst.ql:3:1:3:9 | predicate | semmle.order | 10 | +| printAst.ql:3:1:6:1 | ClasslessPredicate | semmle.label | [ClasslessPredicate] ClasslessPredicate | +| printAst.ql:3:1:6:1 | ClasslessPredicate | semmle.order | 10 | +| printAst.ql:3:1:6:1 | ModuleMember | semmle.label | [ModuleMember] ModuleMember | +| printAst.ql:3:1:6:1 | ModuleMember | semmle.order | 10 | +| printAst.ql:3:11:3:16 | foobar | semmle.label | [PredicateName] foobar | +| printAst.ql:3:11:3:16 | foobar | semmle.order | 13 | +| printAst.ql:3:17:3:17 | ( | semmle.label | [ReservedWord] ( | +| printAst.ql:3:17:3:17 | ( | semmle.order | 14 | +| printAst.ql:3:18:3:18 | ) | semmle.label | [ReservedWord] ) | +| printAst.ql:3:18:3:18 | ) | semmle.order | 15 | +| printAst.ql:3:20:3:20 | { | semmle.label | [ReservedWord] { | +| printAst.ql:3:20:3:20 | { | semmle.order | 16 | +| printAst.ql:3:20:6:1 | Body | semmle.label | [Body] Body | +| printAst.ql:3:20:6:1 | Body | semmle.order | 16 | +| printAst.ql:4:3:4:43 | // this exists to test the printAst query | semmle.label | [LineComment] // this exists to test the printAst query | +| printAst.ql:4:3:4:43 | // this exists to test the printAst query | semmle.order | 18 | +| printAst.ql:5:3:5:8 | exists | semmle.label | [Quantifier] exists | +| printAst.ql:5:3:5:8 | exists | semmle.label | [ReservedWord] exists | +| printAst.ql:5:3:5:8 | exists | semmle.order | 19 | +| printAst.ql:5:3:5:8 | exists | semmle.order | 19 | +| printAst.ql:5:3:5:48 | Quantified | semmle.label | [Quantified] Quantified | +| printAst.ql:5:3:5:48 | Quantified | semmle.order | 19 | +| printAst.ql:5:9:5:9 | ( | semmle.label | [ReservedWord] ( | +| printAst.ql:5:9:5:9 | ( | semmle.order | 22 | +| printAst.ql:5:10:5:12 | TypeExpr | semmle.label | [TypeExpr] TypeExpr | +| printAst.ql:5:10:5:12 | TypeExpr | semmle.order | 23 | +| printAst.ql:5:10:5:12 | int | semmle.label | [PrimitiveType] int | +| printAst.ql:5:10:5:12 | int | semmle.label | [ReservedWord] int | +| printAst.ql:5:10:5:12 | int | semmle.order | 23 | +| printAst.ql:5:10:5:12 | int | semmle.order | 23 | +| printAst.ql:5:10:5:14 | VarDecl | semmle.label | [VarDecl] VarDecl | +| printAst.ql:5:10:5:14 | VarDecl | semmle.order | 23 | +| printAst.ql:5:14:5:14 | VarName | semmle.label | [VarName] VarName | +| printAst.ql:5:14:5:14 | VarName | semmle.order | 27 | +| printAst.ql:5:14:5:14 | i | semmle.label | [SimpleId] i | +| printAst.ql:5:14:5:14 | i | semmle.order | 27 | +| printAst.ql:5:16:5:16 | \| | semmle.label | [ReservedWord] \| | +| printAst.ql:5:16:5:16 | \| | semmle.order | 29 | +| printAst.ql:5:18:5:18 | VarName | semmle.label | [VarName] VarName | +| printAst.ql:5:18:5:18 | VarName | semmle.order | 30 | +| printAst.ql:5:18:5:18 | Variable | semmle.label | [Variable] Variable | +| printAst.ql:5:18:5:18 | Variable | semmle.order | 30 | +| printAst.ql:5:18:5:18 | i | semmle.label | [SimpleId] i | +| printAst.ql:5:18:5:18 | i | semmle.order | 30 | +| printAst.ql:5:18:5:31 | CompTerm | semmle.label | [CompTerm] CompTerm | +| printAst.ql:5:18:5:31 | CompTerm | semmle.order | 30 | +| printAst.ql:5:20:5:20 | = | semmle.label | [Compop] = | +| printAst.ql:5:20:5:20 | = | semmle.label | [ReservedWord] = | +| printAst.ql:5:20:5:20 | = | semmle.order | 34 | +| printAst.ql:5:20:5:20 | = | semmle.order | 34 | +| printAst.ql:5:22:5:22 | [ | semmle.label | [ReservedWord] [ | +| printAst.ql:5:22:5:22 | [ | semmle.order | 36 | +| printAst.ql:5:22:5:31 | Range | semmle.label | [Range] Range | +| printAst.ql:5:22:5:31 | Range | semmle.order | 36 | +| printAst.ql:5:23:5:23 | 1 | semmle.label | [Integer] 1 | +| printAst.ql:5:23:5:23 | 1 | semmle.order | 38 | +| printAst.ql:5:23:5:23 | Literal | semmle.label | [Literal] Literal | +| printAst.ql:5:23:5:23 | Literal | semmle.order | 38 | +| printAst.ql:5:25:5:26 | .. | semmle.label | [ReservedWord] .. | +| printAst.ql:5:25:5:26 | .. | semmle.order | 40 | +| printAst.ql:5:28:5:30 | 100 | semmle.label | [Integer] 100 | +| printAst.ql:5:28:5:30 | 100 | semmle.order | 41 | +| printAst.ql:5:28:5:30 | Literal | semmle.label | [Literal] Literal | +| printAst.ql:5:28:5:30 | Literal | semmle.order | 41 | +| printAst.ql:5:31:5:31 | ] | semmle.label | [ReservedWord] ] | +| printAst.ql:5:31:5:31 | ] | semmle.order | 43 | +| printAst.ql:5:33:5:33 | \| | semmle.label | [ReservedWord] \| | +| printAst.ql:5:33:5:33 | \| | semmle.order | 44 | +| printAst.ql:5:35:5:35 | VarName | semmle.label | [VarName] VarName | +| printAst.ql:5:35:5:35 | VarName | semmle.order | 45 | +| printAst.ql:5:35:5:35 | Variable | semmle.label | [Variable] Variable | +| printAst.ql:5:35:5:35 | Variable | semmle.order | 45 | +| printAst.ql:5:35:5:35 | i | semmle.label | [SimpleId] i | +| printAst.ql:5:35:5:35 | i | semmle.order | 45 | +| printAst.ql:5:35:5:39 | MulExpr | semmle.label | [MulExpr] MulExpr | +| printAst.ql:5:35:5:39 | MulExpr | semmle.order | 45 | +| printAst.ql:5:35:5:47 | CompTerm | semmle.label | [CompTerm] CompTerm | +| printAst.ql:5:35:5:47 | CompTerm | semmle.order | 45 | +| printAst.ql:5:37:5:37 | * | semmle.label | [Mulop] * | +| printAst.ql:5:37:5:37 | * | semmle.label | [ReservedWord] * | +| printAst.ql:5:37:5:37 | * | semmle.order | 50 | +| printAst.ql:5:37:5:37 | * | semmle.order | 50 | +| printAst.ql:5:39:5:39 | 3 | semmle.label | [Integer] 3 | +| printAst.ql:5:39:5:39 | 3 | semmle.order | 52 | +| printAst.ql:5:39:5:39 | Literal | semmle.label | [Literal] Literal | +| printAst.ql:5:39:5:39 | Literal | semmle.order | 52 | +| printAst.ql:5:41:5:41 | = | semmle.label | [Compop] = | +| printAst.ql:5:41:5:41 | = | semmle.label | [ReservedWord] = | +| printAst.ql:5:41:5:41 | = | semmle.order | 54 | +| printAst.ql:5:41:5:41 | = | semmle.order | 54 | +| printAst.ql:5:43:5:43 | VarName | semmle.label | [VarName] VarName | +| printAst.ql:5:43:5:43 | VarName | semmle.order | 56 | +| printAst.ql:5:43:5:43 | Variable | semmle.label | [Variable] Variable | +| printAst.ql:5:43:5:43 | Variable | semmle.order | 56 | +| printAst.ql:5:43:5:43 | i | semmle.label | [SimpleId] i | +| printAst.ql:5:43:5:43 | i | semmle.order | 56 | +| printAst.ql:5:43:5:47 | AddExpr | semmle.label | [AddExpr] AddExpr | +| printAst.ql:5:43:5:47 | AddExpr | semmle.order | 56 | +| printAst.ql:5:45:5:45 | + | semmle.label | [Addop] + | +| printAst.ql:5:45:5:45 | + | semmle.label | [ReservedWord] + | +| printAst.ql:5:45:5:45 | + | semmle.order | 60 | +| printAst.ql:5:45:5:45 | + | semmle.order | 60 | +| printAst.ql:5:47:5:47 | 2 | semmle.label | [Integer] 2 | +| printAst.ql:5:47:5:47 | 2 | semmle.order | 62 | +| printAst.ql:5:47:5:47 | Literal | semmle.label | [Literal] Literal | +| printAst.ql:5:47:5:47 | Literal | semmle.order | 62 | +| printAst.ql:5:48:5:48 | ) | semmle.label | [ReservedWord] ) | +| printAst.ql:5:48:5:48 | ) | semmle.order | 64 | +| printAst.ql:6:1:6:1 | } | semmle.label | [ReservedWord] } | +| printAst.ql:6:1:6:1 | } | semmle.order | 65 | +edges +| 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 | 1 | +| 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 | 5 | +| 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 | 1 | +| printAst.ql:1:1:6:2 | Ql | printAst.ql:1:1:1:25 | ModuleMember | semmle.label | 1 | +| printAst.ql:1:1:6:2 | Ql | printAst.ql:1:1:1:25 | ModuleMember | semmle.order | 1 | +| printAst.ql:1:1:6:2 | Ql | printAst.ql:3:1:6:1 | ModuleMember | semmle.label | 2 | +| printAst.ql:1:1:6:2 | Ql | printAst.ql:3:1:6:1 | ModuleMember | semmle.order | 10 | +| 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 | 5 | +| 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 | 5 | +| 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 | 8 | +| 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 | 9 | +| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:1:3:9 | predicate | semmle.label | 1 | +| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:1:3:9 | predicate | semmle.order | 10 | +| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:11:3:16 | foobar | semmle.label | 2 | +| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:11:3:16 | foobar | semmle.order | 13 | +| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:17:3:17 | ( | semmle.label | 3 | +| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:17:3:17 | ( | semmle.order | 14 | +| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:18:3:18 | ) | semmle.label | 4 | +| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:18:3:18 | ) | semmle.order | 15 | +| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:20:6:1 | Body | semmle.label | 5 | +| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:20:6:1 | Body | semmle.order | 16 | +| printAst.ql:3:1:6:1 | ModuleMember | printAst.ql:3:1:6:1 | ClasslessPredicate | semmle.label | 1 | +| printAst.ql:3:1:6:1 | ModuleMember | printAst.ql:3:1:6:1 | ClasslessPredicate | semmle.order | 10 | +| printAst.ql:3:20:6:1 | Body | printAst.ql:3:20:3:20 | { | semmle.label | 1 | +| printAst.ql:3:20:6:1 | Body | printAst.ql:3:20:3:20 | { | semmle.order | 16 | +| printAst.ql:3:20:6:1 | Body | printAst.ql:5:3:5:48 | Quantified | semmle.label | 2 | +| printAst.ql:3:20:6:1 | Body | printAst.ql:5:3:5:48 | Quantified | semmle.order | 19 | +| printAst.ql:3:20:6:1 | Body | printAst.ql:6:1:6:1 | } | semmle.label | 3 | +| printAst.ql:3:20:6:1 | Body | printAst.ql:6:1:6:1 | } | semmle.order | 65 | +| printAst.ql:5:3:5:8 | exists | printAst.ql:5:3:5:8 | exists | semmle.label | 1 | +| printAst.ql:5:3:5:8 | exists | printAst.ql:5:3:5:8 | exists | semmle.order | 19 | +| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:3:5:8 | exists | semmle.label | 1 | +| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:3:5:8 | exists | semmle.order | 19 | +| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:9:5:9 | ( | semmle.label | 2 | +| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:9:5:9 | ( | semmle.order | 22 | +| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:10:5:14 | VarDecl | semmle.label | 3 | +| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:10:5:14 | VarDecl | semmle.order | 23 | +| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:16:5:16 | \| | semmle.label | 4 | +| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:16:5:16 | \| | semmle.order | 29 | +| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:18:5:31 | CompTerm | semmle.label | 5 | +| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:18:5:31 | CompTerm | semmle.order | 30 | +| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:33:5:33 | \| | semmle.label | 6 | +| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:33:5:33 | \| | semmle.order | 44 | +| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:35:5:47 | CompTerm | semmle.label | 7 | +| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:35:5:47 | CompTerm | semmle.order | 45 | +| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:48:5:48 | ) | semmle.label | 8 | +| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:48:5:48 | ) | semmle.order | 64 | +| printAst.ql:5:10:5:12 | TypeExpr | printAst.ql:5:10:5:12 | int | semmle.label | 1 | +| printAst.ql:5:10:5:12 | TypeExpr | printAst.ql:5:10:5:12 | int | semmle.order | 23 | +| printAst.ql:5:10:5:12 | int | printAst.ql:5:10:5:12 | int | semmle.label | 1 | +| printAst.ql:5:10:5:12 | int | printAst.ql:5:10:5:12 | int | semmle.order | 23 | +| printAst.ql:5:10:5:14 | VarDecl | printAst.ql:5:10:5:12 | TypeExpr | semmle.label | 1 | +| printAst.ql:5:10:5:14 | VarDecl | printAst.ql:5:10:5:12 | TypeExpr | semmle.order | 23 | +| printAst.ql:5:10:5:14 | VarDecl | printAst.ql:5:14:5:14 | VarName | semmle.label | 2 | +| printAst.ql:5:10:5:14 | VarDecl | printAst.ql:5:14:5:14 | VarName | semmle.order | 27 | +| printAst.ql:5:14:5:14 | VarName | printAst.ql:5:14:5:14 | i | semmle.label | 1 | +| printAst.ql:5:14:5:14 | VarName | printAst.ql:5:14:5:14 | i | semmle.order | 27 | +| printAst.ql:5:18:5:18 | VarName | printAst.ql:5:18:5:18 | i | semmle.label | 1 | +| printAst.ql:5:18:5:18 | VarName | printAst.ql:5:18:5:18 | i | semmle.order | 30 | +| printAst.ql:5:18:5:18 | Variable | printAst.ql:5:18:5:18 | VarName | semmle.label | 1 | +| printAst.ql:5:18:5:18 | Variable | printAst.ql:5:18:5:18 | VarName | semmle.order | 30 | +| printAst.ql:5:18:5:31 | CompTerm | printAst.ql:5:18:5:18 | Variable | semmle.label | 1 | +| printAst.ql:5:18:5:31 | CompTerm | printAst.ql:5:18:5:18 | Variable | semmle.order | 30 | +| printAst.ql:5:18:5:31 | CompTerm | printAst.ql:5:20:5:20 | = | semmle.label | 2 | +| printAst.ql:5:18:5:31 | CompTerm | printAst.ql:5:20:5:20 | = | semmle.order | 34 | +| printAst.ql:5:18:5:31 | CompTerm | printAst.ql:5:22:5:31 | Range | semmle.label | 3 | +| printAst.ql:5:18:5:31 | CompTerm | printAst.ql:5:22:5:31 | Range | semmle.order | 36 | +| printAst.ql:5:20:5:20 | = | printAst.ql:5:20:5:20 | = | semmle.label | 1 | +| printAst.ql:5:20:5:20 | = | printAst.ql:5:20:5:20 | = | semmle.order | 34 | +| printAst.ql:5:22:5:31 | Range | printAst.ql:5:22:5:22 | [ | semmle.label | 1 | +| printAst.ql:5:22:5:31 | Range | printAst.ql:5:22:5:22 | [ | semmle.order | 36 | +| printAst.ql:5:22:5:31 | Range | printAst.ql:5:23:5:23 | Literal | semmle.label | 2 | +| printAst.ql:5:22:5:31 | Range | printAst.ql:5:23:5:23 | Literal | semmle.order | 38 | +| printAst.ql:5:22:5:31 | Range | printAst.ql:5:25:5:26 | .. | semmle.label | 3 | +| printAst.ql:5:22:5:31 | Range | printAst.ql:5:25:5:26 | .. | semmle.order | 40 | +| printAst.ql:5:22:5:31 | Range | printAst.ql:5:28:5:30 | Literal | semmle.label | 4 | +| printAst.ql:5:22:5:31 | Range | printAst.ql:5:28:5:30 | Literal | semmle.order | 41 | +| printAst.ql:5:22:5:31 | Range | printAst.ql:5:31:5:31 | ] | semmle.label | 5 | +| printAst.ql:5:22:5:31 | Range | printAst.ql:5:31:5:31 | ] | semmle.order | 43 | +| printAst.ql:5:23:5:23 | Literal | printAst.ql:5:23:5:23 | 1 | semmle.label | 1 | +| printAst.ql:5:23:5:23 | Literal | printAst.ql:5:23:5:23 | 1 | semmle.order | 38 | +| printAst.ql:5:28:5:30 | Literal | printAst.ql:5:28:5:30 | 100 | semmle.label | 1 | +| printAst.ql:5:28:5:30 | Literal | printAst.ql:5:28:5:30 | 100 | semmle.order | 41 | +| printAst.ql:5:35:5:35 | VarName | printAst.ql:5:35:5:35 | i | semmle.label | 1 | +| printAst.ql:5:35:5:35 | VarName | printAst.ql:5:35:5:35 | i | semmle.order | 45 | +| printAst.ql:5:35:5:35 | Variable | printAst.ql:5:35:5:35 | VarName | semmle.label | 1 | +| printAst.ql:5:35:5:35 | Variable | printAst.ql:5:35:5:35 | VarName | semmle.order | 45 | +| printAst.ql:5:35:5:39 | MulExpr | printAst.ql:5:35:5:35 | Variable | semmle.label | 1 | +| printAst.ql:5:35:5:39 | MulExpr | printAst.ql:5:35:5:35 | Variable | semmle.order | 45 | +| printAst.ql:5:35:5:39 | MulExpr | printAst.ql:5:37:5:37 | * | semmle.label | 2 | +| printAst.ql:5:35:5:39 | MulExpr | printAst.ql:5:37:5:37 | * | semmle.order | 50 | +| printAst.ql:5:35:5:39 | MulExpr | printAst.ql:5:39:5:39 | Literal | semmle.label | 3 | +| printAst.ql:5:35:5:39 | MulExpr | printAst.ql:5:39:5:39 | Literal | semmle.order | 52 | +| printAst.ql:5:35:5:47 | CompTerm | printAst.ql:5:35:5:39 | MulExpr | semmle.label | 1 | +| printAst.ql:5:35:5:47 | CompTerm | printAst.ql:5:35:5:39 | MulExpr | semmle.order | 45 | +| printAst.ql:5:35:5:47 | CompTerm | printAst.ql:5:41:5:41 | = | semmle.label | 2 | +| printAst.ql:5:35:5:47 | CompTerm | printAst.ql:5:41:5:41 | = | semmle.order | 54 | +| printAst.ql:5:35:5:47 | CompTerm | printAst.ql:5:43:5:47 | AddExpr | semmle.label | 3 | +| printAst.ql:5:35:5:47 | CompTerm | printAst.ql:5:43:5:47 | AddExpr | semmle.order | 56 | +| printAst.ql:5:37:5:37 | * | printAst.ql:5:37:5:37 | * | semmle.label | 1 | +| printAst.ql:5:37:5:37 | * | printAst.ql:5:37:5:37 | * | semmle.order | 50 | +| printAst.ql:5:39:5:39 | Literal | printAst.ql:5:39:5:39 | 3 | semmle.label | 1 | +| printAst.ql:5:39:5:39 | Literal | printAst.ql:5:39:5:39 | 3 | semmle.order | 52 | +| printAst.ql:5:41:5:41 | = | printAst.ql:5:41:5:41 | = | semmle.label | 1 | +| printAst.ql:5:41:5:41 | = | printAst.ql:5:41:5:41 | = | semmle.order | 54 | +| printAst.ql:5:43:5:43 | VarName | printAst.ql:5:43:5:43 | i | semmle.label | 1 | +| printAst.ql:5:43:5:43 | VarName | printAst.ql:5:43:5:43 | i | semmle.order | 56 | +| printAst.ql:5:43:5:43 | Variable | printAst.ql:5:43:5:43 | VarName | semmle.label | 1 | +| printAst.ql:5:43:5:43 | Variable | printAst.ql:5:43:5:43 | VarName | semmle.order | 56 | +| printAst.ql:5:43:5:47 | AddExpr | printAst.ql:5:43:5:43 | Variable | semmle.label | 1 | +| printAst.ql:5:43:5:47 | AddExpr | printAst.ql:5:43:5:43 | Variable | semmle.order | 56 | +| printAst.ql:5:43:5:47 | AddExpr | printAst.ql:5:45:5:45 | + | semmle.label | 2 | +| printAst.ql:5:43:5:47 | AddExpr | printAst.ql:5:45:5:45 | + | semmle.order | 60 | +| printAst.ql:5:43:5:47 | AddExpr | printAst.ql:5:47:5:47 | Literal | semmle.label | 3 | +| printAst.ql:5:43:5:47 | AddExpr | printAst.ql:5:47:5:47 | Literal | semmle.order | 62 | +| printAst.ql:5:45:5:45 | + | printAst.ql:5:45:5:45 | + | semmle.label | 1 | +| printAst.ql:5:45:5:45 | + | printAst.ql:5:45:5:45 | + | semmle.order | 60 | +| printAst.ql:5:47:5:47 | Literal | printAst.ql:5:47:5:47 | 2 | semmle.label | 1 | +| printAst.ql:5:47:5:47 | Literal | printAst.ql:5:47:5:47 | 2 | semmle.order | 62 | +graphProperties +| semmle.graphKind | tree | diff --git a/ql/test/printAst/printAst.ql b/ql/test/printAst/printAst.ql new file mode 100644 index 000000000000..ea1573a9bf54 --- /dev/null +++ b/ql/test/printAst/printAst.ql @@ -0,0 +1,6 @@ +import codeql_ql.printAst + +predicate foobar() { + // this exists to test the printAst query + exists(int i | i = [1 .. 100] | i * 3 = i + 2) +} From f916aa9a37ebf866d0a45633dfbc1e8bbd14c4a6 Mon Sep 17 00:00:00 2001 From: Erik Krogh Kristensen Date: Wed, 26 May 2021 12:42:44 +0000 Subject: [PATCH 4/4] better printAst test --- ql/test/printAst/Foo.qll | 11 + ql/test/printAst/printAst.expected | 735 +++++++++++++++++++---------- ql/test/printAst/printAst.ql | 5 - 3 files changed, 504 insertions(+), 247 deletions(-) create mode 100644 ql/test/printAst/Foo.qll diff --git a/ql/test/printAst/Foo.qll b/ql/test/printAst/Foo.qll new file mode 100644 index 000000000000..a59ef859f38c --- /dev/null +++ b/ql/test/printAst/Foo.qll @@ -0,0 +1,11 @@ +import javascript + +class Foo extends @bar { + Foo() { 1 = 2 } + + string toString() { result = "Foo" } +} + +query predicate foo(Foo f) { + f = rank[2](Foo inner | inner.toString() = "foo" | inner order by inner.toString()) +} diff --git a/ql/test/printAst/printAst.expected b/ql/test/printAst/printAst.expected index ee19c44e70aa..75732ce0be4c 100644 --- a/ql/test/printAst/printAst.expected +++ b/ql/test/printAst/printAst.expected @@ -1,261 +1,512 @@ -WARNING: Unused predicate foobar (printAst.ql:3,11-17) 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: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: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: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: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 | 1 | +| 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 | 1 | +| 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 | 1 | -| printAst.ql:1:1:6:2 | Ql | semmle.label | [Ql] Ql | -| printAst.ql:1:1:6:2 | Ql | semmle.order | 1 | +| 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 | 5 | +| 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 | 5 | +| 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 | 5 | +| 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 | 8 | +| 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 | 9 | -| printAst.ql:3:1:3:9 | predicate | semmle.label | [Predicate] predicate | -| printAst.ql:3:1:3:9 | predicate | semmle.order | 10 | -| printAst.ql:3:1:6:1 | ClasslessPredicate | semmle.label | [ClasslessPredicate] ClasslessPredicate | -| printAst.ql:3:1:6:1 | ClasslessPredicate | semmle.order | 10 | -| printAst.ql:3:1:6:1 | ModuleMember | semmle.label | [ModuleMember] ModuleMember | -| printAst.ql:3:1:6:1 | ModuleMember | semmle.order | 10 | -| printAst.ql:3:11:3:16 | foobar | semmle.label | [PredicateName] foobar | -| printAst.ql:3:11:3:16 | foobar | semmle.order | 13 | -| printAst.ql:3:17:3:17 | ( | semmle.label | [ReservedWord] ( | -| printAst.ql:3:17:3:17 | ( | semmle.order | 14 | -| printAst.ql:3:18:3:18 | ) | semmle.label | [ReservedWord] ) | -| printAst.ql:3:18:3:18 | ) | semmle.order | 15 | -| printAst.ql:3:20:3:20 | { | semmle.label | [ReservedWord] { | -| printAst.ql:3:20:3:20 | { | semmle.order | 16 | -| printAst.ql:3:20:6:1 | Body | semmle.label | [Body] Body | -| printAst.ql:3:20:6:1 | Body | semmle.order | 16 | -| printAst.ql:4:3:4:43 | // this exists to test the printAst query | semmle.label | [LineComment] // this exists to test the printAst query | -| printAst.ql:4:3:4:43 | // this exists to test the printAst query | semmle.order | 18 | -| printAst.ql:5:3:5:8 | exists | semmle.label | [Quantifier] exists | -| printAst.ql:5:3:5:8 | exists | semmle.label | [ReservedWord] exists | -| printAst.ql:5:3:5:8 | exists | semmle.order | 19 | -| printAst.ql:5:3:5:8 | exists | semmle.order | 19 | -| printAst.ql:5:3:5:48 | Quantified | semmle.label | [Quantified] Quantified | -| printAst.ql:5:3:5:48 | Quantified | semmle.order | 19 | -| printAst.ql:5:9:5:9 | ( | semmle.label | [ReservedWord] ( | -| printAst.ql:5:9:5:9 | ( | semmle.order | 22 | -| printAst.ql:5:10:5:12 | TypeExpr | semmle.label | [TypeExpr] TypeExpr | -| printAst.ql:5:10:5:12 | TypeExpr | semmle.order | 23 | -| printAst.ql:5:10:5:12 | int | semmle.label | [PrimitiveType] int | -| printAst.ql:5:10:5:12 | int | semmle.label | [ReservedWord] int | -| printAst.ql:5:10:5:12 | int | semmle.order | 23 | -| printAst.ql:5:10:5:12 | int | semmle.order | 23 | -| printAst.ql:5:10:5:14 | VarDecl | semmle.label | [VarDecl] VarDecl | -| printAst.ql:5:10:5:14 | VarDecl | semmle.order | 23 | -| printAst.ql:5:14:5:14 | VarName | semmle.label | [VarName] VarName | -| printAst.ql:5:14:5:14 | VarName | semmle.order | 27 | -| printAst.ql:5:14:5:14 | i | semmle.label | [SimpleId] i | -| printAst.ql:5:14:5:14 | i | semmle.order | 27 | -| printAst.ql:5:16:5:16 | \| | semmle.label | [ReservedWord] \| | -| printAst.ql:5:16:5:16 | \| | semmle.order | 29 | -| printAst.ql:5:18:5:18 | VarName | semmle.label | [VarName] VarName | -| printAst.ql:5:18:5:18 | VarName | semmle.order | 30 | -| printAst.ql:5:18:5:18 | Variable | semmle.label | [Variable] Variable | -| printAst.ql:5:18:5:18 | Variable | semmle.order | 30 | -| printAst.ql:5:18:5:18 | i | semmle.label | [SimpleId] i | -| printAst.ql:5:18:5:18 | i | semmle.order | 30 | -| printAst.ql:5:18:5:31 | CompTerm | semmle.label | [CompTerm] CompTerm | -| printAst.ql:5:18:5:31 | CompTerm | semmle.order | 30 | -| printAst.ql:5:20:5:20 | = | semmle.label | [Compop] = | -| printAst.ql:5:20:5:20 | = | semmle.label | [ReservedWord] = | -| printAst.ql:5:20:5:20 | = | semmle.order | 34 | -| printAst.ql:5:20:5:20 | = | semmle.order | 34 | -| printAst.ql:5:22:5:22 | [ | semmle.label | [ReservedWord] [ | -| printAst.ql:5:22:5:22 | [ | semmle.order | 36 | -| printAst.ql:5:22:5:31 | Range | semmle.label | [Range] Range | -| printAst.ql:5:22:5:31 | Range | semmle.order | 36 | -| printAst.ql:5:23:5:23 | 1 | semmle.label | [Integer] 1 | -| printAst.ql:5:23:5:23 | 1 | semmle.order | 38 | -| printAst.ql:5:23:5:23 | Literal | semmle.label | [Literal] Literal | -| printAst.ql:5:23:5:23 | Literal | semmle.order | 38 | -| printAst.ql:5:25:5:26 | .. | semmle.label | [ReservedWord] .. | -| printAst.ql:5:25:5:26 | .. | semmle.order | 40 | -| printAst.ql:5:28:5:30 | 100 | semmle.label | [Integer] 100 | -| printAst.ql:5:28:5:30 | 100 | semmle.order | 41 | -| printAst.ql:5:28:5:30 | Literal | semmle.label | [Literal] Literal | -| printAst.ql:5:28:5:30 | Literal | semmle.order | 41 | -| printAst.ql:5:31:5:31 | ] | semmle.label | [ReservedWord] ] | -| printAst.ql:5:31:5:31 | ] | semmle.order | 43 | -| printAst.ql:5:33:5:33 | \| | semmle.label | [ReservedWord] \| | -| printAst.ql:5:33:5:33 | \| | semmle.order | 44 | -| printAst.ql:5:35:5:35 | VarName | semmle.label | [VarName] VarName | -| printAst.ql:5:35:5:35 | VarName | semmle.order | 45 | -| printAst.ql:5:35:5:35 | Variable | semmle.label | [Variable] Variable | -| printAst.ql:5:35:5:35 | Variable | semmle.order | 45 | -| printAst.ql:5:35:5:35 | i | semmle.label | [SimpleId] i | -| printAst.ql:5:35:5:35 | i | semmle.order | 45 | -| printAst.ql:5:35:5:39 | MulExpr | semmle.label | [MulExpr] MulExpr | -| printAst.ql:5:35:5:39 | MulExpr | semmle.order | 45 | -| printAst.ql:5:35:5:47 | CompTerm | semmle.label | [CompTerm] CompTerm | -| printAst.ql:5:35:5:47 | CompTerm | semmle.order | 45 | -| printAst.ql:5:37:5:37 | * | semmle.label | [Mulop] * | -| printAst.ql:5:37:5:37 | * | semmle.label | [ReservedWord] * | -| printAst.ql:5:37:5:37 | * | semmle.order | 50 | -| printAst.ql:5:37:5:37 | * | semmle.order | 50 | -| printAst.ql:5:39:5:39 | 3 | semmle.label | [Integer] 3 | -| printAst.ql:5:39:5:39 | 3 | semmle.order | 52 | -| printAst.ql:5:39:5:39 | Literal | semmle.label | [Literal] Literal | -| printAst.ql:5:39:5:39 | Literal | semmle.order | 52 | -| printAst.ql:5:41:5:41 | = | semmle.label | [Compop] = | -| printAst.ql:5:41:5:41 | = | semmle.label | [ReservedWord] = | -| printAst.ql:5:41:5:41 | = | semmle.order | 54 | -| printAst.ql:5:41:5:41 | = | semmle.order | 54 | -| printAst.ql:5:43:5:43 | VarName | semmle.label | [VarName] VarName | -| printAst.ql:5:43:5:43 | VarName | semmle.order | 56 | -| printAst.ql:5:43:5:43 | Variable | semmle.label | [Variable] Variable | -| printAst.ql:5:43:5:43 | Variable | semmle.order | 56 | -| printAst.ql:5:43:5:43 | i | semmle.label | [SimpleId] i | -| printAst.ql:5:43:5:43 | i | semmle.order | 56 | -| printAst.ql:5:43:5:47 | AddExpr | semmle.label | [AddExpr] AddExpr | -| printAst.ql:5:43:5:47 | AddExpr | semmle.order | 56 | -| printAst.ql:5:45:5:45 | + | semmle.label | [Addop] + | -| printAst.ql:5:45:5:45 | + | semmle.label | [ReservedWord] + | -| printAst.ql:5:45:5:45 | + | semmle.order | 60 | -| printAst.ql:5:45:5:45 | + | semmle.order | 60 | -| printAst.ql:5:47:5:47 | 2 | semmle.label | [Integer] 2 | -| printAst.ql:5:47:5:47 | 2 | semmle.order | 62 | -| printAst.ql:5:47:5:47 | Literal | semmle.label | [Literal] Literal | -| printAst.ql:5:47:5:47 | Literal | semmle.order | 62 | -| printAst.ql:5:48:5:48 | ) | semmle.label | [ReservedWord] ) | -| printAst.ql:5:48:5:48 | ) | semmle.order | 64 | -| printAst.ql:6:1:6:1 | } | semmle.label | [ReservedWord] } | -| printAst.ql:6:1:6:1 | } | semmle.order | 65 | +| printAst.ql:1:18:1:25 | printAst | semmle.order | 128 | 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 | 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 | 5 | +| 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 | 1 | -| printAst.ql:1:1:6:2 | Ql | printAst.ql:1:1:1:25 | ModuleMember | semmle.label | 1 | -| printAst.ql:1:1:6:2 | Ql | printAst.ql:1:1:1:25 | ModuleMember | semmle.order | 1 | -| printAst.ql:1:1:6:2 | Ql | printAst.ql:3:1:6:1 | ModuleMember | semmle.label | 2 | -| printAst.ql:1:1:6:2 | Ql | printAst.ql:3:1:6:1 | ModuleMember | semmle.order | 10 | +| 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 | 5 | +| 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 | 5 | +| 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 | 8 | +| 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 | 9 | -| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:1:3:9 | predicate | semmle.label | 1 | -| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:1:3:9 | predicate | semmle.order | 10 | -| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:11:3:16 | foobar | semmle.label | 2 | -| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:11:3:16 | foobar | semmle.order | 13 | -| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:17:3:17 | ( | semmle.label | 3 | -| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:17:3:17 | ( | semmle.order | 14 | -| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:18:3:18 | ) | semmle.label | 4 | -| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:18:3:18 | ) | semmle.order | 15 | -| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:20:6:1 | Body | semmle.label | 5 | -| printAst.ql:3:1:6:1 | ClasslessPredicate | printAst.ql:3:20:6:1 | Body | semmle.order | 16 | -| printAst.ql:3:1:6:1 | ModuleMember | printAst.ql:3:1:6:1 | ClasslessPredicate | semmle.label | 1 | -| printAst.ql:3:1:6:1 | ModuleMember | printAst.ql:3:1:6:1 | ClasslessPredicate | semmle.order | 10 | -| printAst.ql:3:20:6:1 | Body | printAst.ql:3:20:3:20 | { | semmle.label | 1 | -| printAst.ql:3:20:6:1 | Body | printAst.ql:3:20:3:20 | { | semmle.order | 16 | -| printAst.ql:3:20:6:1 | Body | printAst.ql:5:3:5:48 | Quantified | semmle.label | 2 | -| printAst.ql:3:20:6:1 | Body | printAst.ql:5:3:5:48 | Quantified | semmle.order | 19 | -| printAst.ql:3:20:6:1 | Body | printAst.ql:6:1:6:1 | } | semmle.label | 3 | -| printAst.ql:3:20:6:1 | Body | printAst.ql:6:1:6:1 | } | semmle.order | 65 | -| printAst.ql:5:3:5:8 | exists | printAst.ql:5:3:5:8 | exists | semmle.label | 1 | -| printAst.ql:5:3:5:8 | exists | printAst.ql:5:3:5:8 | exists | semmle.order | 19 | -| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:3:5:8 | exists | semmle.label | 1 | -| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:3:5:8 | exists | semmle.order | 19 | -| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:9:5:9 | ( | semmle.label | 2 | -| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:9:5:9 | ( | semmle.order | 22 | -| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:10:5:14 | VarDecl | semmle.label | 3 | -| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:10:5:14 | VarDecl | semmle.order | 23 | -| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:16:5:16 | \| | semmle.label | 4 | -| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:16:5:16 | \| | semmle.order | 29 | -| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:18:5:31 | CompTerm | semmle.label | 5 | -| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:18:5:31 | CompTerm | semmle.order | 30 | -| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:33:5:33 | \| | semmle.label | 6 | -| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:33:5:33 | \| | semmle.order | 44 | -| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:35:5:47 | CompTerm | semmle.label | 7 | -| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:35:5:47 | CompTerm | semmle.order | 45 | -| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:48:5:48 | ) | semmle.label | 8 | -| printAst.ql:5:3:5:48 | Quantified | printAst.ql:5:48:5:48 | ) | semmle.order | 64 | -| printAst.ql:5:10:5:12 | TypeExpr | printAst.ql:5:10:5:12 | int | semmle.label | 1 | -| printAst.ql:5:10:5:12 | TypeExpr | printAst.ql:5:10:5:12 | int | semmle.order | 23 | -| printAst.ql:5:10:5:12 | int | printAst.ql:5:10:5:12 | int | semmle.label | 1 | -| printAst.ql:5:10:5:12 | int | printAst.ql:5:10:5:12 | int | semmle.order | 23 | -| printAst.ql:5:10:5:14 | VarDecl | printAst.ql:5:10:5:12 | TypeExpr | semmle.label | 1 | -| printAst.ql:5:10:5:14 | VarDecl | printAst.ql:5:10:5:12 | TypeExpr | semmle.order | 23 | -| printAst.ql:5:10:5:14 | VarDecl | printAst.ql:5:14:5:14 | VarName | semmle.label | 2 | -| printAst.ql:5:10:5:14 | VarDecl | printAst.ql:5:14:5:14 | VarName | semmle.order | 27 | -| printAst.ql:5:14:5:14 | VarName | printAst.ql:5:14:5:14 | i | semmle.label | 1 | -| printAst.ql:5:14:5:14 | VarName | printAst.ql:5:14:5:14 | i | semmle.order | 27 | -| printAst.ql:5:18:5:18 | VarName | printAst.ql:5:18:5:18 | i | semmle.label | 1 | -| printAst.ql:5:18:5:18 | VarName | printAst.ql:5:18:5:18 | i | semmle.order | 30 | -| printAst.ql:5:18:5:18 | Variable | printAst.ql:5:18:5:18 | VarName | semmle.label | 1 | -| printAst.ql:5:18:5:18 | Variable | printAst.ql:5:18:5:18 | VarName | semmle.order | 30 | -| printAst.ql:5:18:5:31 | CompTerm | printAst.ql:5:18:5:18 | Variable | semmle.label | 1 | -| printAst.ql:5:18:5:31 | CompTerm | printAst.ql:5:18:5:18 | Variable | semmle.order | 30 | -| printAst.ql:5:18:5:31 | CompTerm | printAst.ql:5:20:5:20 | = | semmle.label | 2 | -| printAst.ql:5:18:5:31 | CompTerm | printAst.ql:5:20:5:20 | = | semmle.order | 34 | -| printAst.ql:5:18:5:31 | CompTerm | printAst.ql:5:22:5:31 | Range | semmle.label | 3 | -| printAst.ql:5:18:5:31 | CompTerm | printAst.ql:5:22:5:31 | Range | semmle.order | 36 | -| printAst.ql:5:20:5:20 | = | printAst.ql:5:20:5:20 | = | semmle.label | 1 | -| printAst.ql:5:20:5:20 | = | printAst.ql:5:20:5:20 | = | semmle.order | 34 | -| printAst.ql:5:22:5:31 | Range | printAst.ql:5:22:5:22 | [ | semmle.label | 1 | -| printAst.ql:5:22:5:31 | Range | printAst.ql:5:22:5:22 | [ | semmle.order | 36 | -| printAst.ql:5:22:5:31 | Range | printAst.ql:5:23:5:23 | Literal | semmle.label | 2 | -| printAst.ql:5:22:5:31 | Range | printAst.ql:5:23:5:23 | Literal | semmle.order | 38 | -| printAst.ql:5:22:5:31 | Range | printAst.ql:5:25:5:26 | .. | semmle.label | 3 | -| printAst.ql:5:22:5:31 | Range | printAst.ql:5:25:5:26 | .. | semmle.order | 40 | -| printAst.ql:5:22:5:31 | Range | printAst.ql:5:28:5:30 | Literal | semmle.label | 4 | -| printAst.ql:5:22:5:31 | Range | printAst.ql:5:28:5:30 | Literal | semmle.order | 41 | -| printAst.ql:5:22:5:31 | Range | printAst.ql:5:31:5:31 | ] | semmle.label | 5 | -| printAst.ql:5:22:5:31 | Range | printAst.ql:5:31:5:31 | ] | semmle.order | 43 | -| printAst.ql:5:23:5:23 | Literal | printAst.ql:5:23:5:23 | 1 | semmle.label | 1 | -| printAst.ql:5:23:5:23 | Literal | printAst.ql:5:23:5:23 | 1 | semmle.order | 38 | -| printAst.ql:5:28:5:30 | Literal | printAst.ql:5:28:5:30 | 100 | semmle.label | 1 | -| printAst.ql:5:28:5:30 | Literal | printAst.ql:5:28:5:30 | 100 | semmle.order | 41 | -| printAst.ql:5:35:5:35 | VarName | printAst.ql:5:35:5:35 | i | semmle.label | 1 | -| printAst.ql:5:35:5:35 | VarName | printAst.ql:5:35:5:35 | i | semmle.order | 45 | -| printAst.ql:5:35:5:35 | Variable | printAst.ql:5:35:5:35 | VarName | semmle.label | 1 | -| printAst.ql:5:35:5:35 | Variable | printAst.ql:5:35:5:35 | VarName | semmle.order | 45 | -| printAst.ql:5:35:5:39 | MulExpr | printAst.ql:5:35:5:35 | Variable | semmle.label | 1 | -| printAst.ql:5:35:5:39 | MulExpr | printAst.ql:5:35:5:35 | Variable | semmle.order | 45 | -| printAst.ql:5:35:5:39 | MulExpr | printAst.ql:5:37:5:37 | * | semmle.label | 2 | -| printAst.ql:5:35:5:39 | MulExpr | printAst.ql:5:37:5:37 | * | semmle.order | 50 | -| printAst.ql:5:35:5:39 | MulExpr | printAst.ql:5:39:5:39 | Literal | semmle.label | 3 | -| printAst.ql:5:35:5:39 | MulExpr | printAst.ql:5:39:5:39 | Literal | semmle.order | 52 | -| printAst.ql:5:35:5:47 | CompTerm | printAst.ql:5:35:5:39 | MulExpr | semmle.label | 1 | -| printAst.ql:5:35:5:47 | CompTerm | printAst.ql:5:35:5:39 | MulExpr | semmle.order | 45 | -| printAst.ql:5:35:5:47 | CompTerm | printAst.ql:5:41:5:41 | = | semmle.label | 2 | -| printAst.ql:5:35:5:47 | CompTerm | printAst.ql:5:41:5:41 | = | semmle.order | 54 | -| printAst.ql:5:35:5:47 | CompTerm | printAst.ql:5:43:5:47 | AddExpr | semmle.label | 3 | -| printAst.ql:5:35:5:47 | CompTerm | printAst.ql:5:43:5:47 | AddExpr | semmle.order | 56 | -| printAst.ql:5:37:5:37 | * | printAst.ql:5:37:5:37 | * | semmle.label | 1 | -| printAst.ql:5:37:5:37 | * | printAst.ql:5:37:5:37 | * | semmle.order | 50 | -| printAst.ql:5:39:5:39 | Literal | printAst.ql:5:39:5:39 | 3 | semmle.label | 1 | -| printAst.ql:5:39:5:39 | Literal | printAst.ql:5:39:5:39 | 3 | semmle.order | 52 | -| printAst.ql:5:41:5:41 | = | printAst.ql:5:41:5:41 | = | semmle.label | 1 | -| printAst.ql:5:41:5:41 | = | printAst.ql:5:41:5:41 | = | semmle.order | 54 | -| printAst.ql:5:43:5:43 | VarName | printAst.ql:5:43:5:43 | i | semmle.label | 1 | -| printAst.ql:5:43:5:43 | VarName | printAst.ql:5:43:5:43 | i | semmle.order | 56 | -| printAst.ql:5:43:5:43 | Variable | printAst.ql:5:43:5:43 | VarName | semmle.label | 1 | -| printAst.ql:5:43:5:43 | Variable | printAst.ql:5:43:5:43 | VarName | semmle.order | 56 | -| printAst.ql:5:43:5:47 | AddExpr | printAst.ql:5:43:5:43 | Variable | semmle.label | 1 | -| printAst.ql:5:43:5:47 | AddExpr | printAst.ql:5:43:5:43 | Variable | semmle.order | 56 | -| printAst.ql:5:43:5:47 | AddExpr | printAst.ql:5:45:5:45 | + | semmle.label | 2 | -| printAst.ql:5:43:5:47 | AddExpr | printAst.ql:5:45:5:45 | + | semmle.order | 60 | -| printAst.ql:5:43:5:47 | AddExpr | printAst.ql:5:47:5:47 | Literal | semmle.label | 3 | -| printAst.ql:5:43:5:47 | AddExpr | printAst.ql:5:47:5:47 | Literal | semmle.order | 62 | -| printAst.ql:5:45:5:45 | + | printAst.ql:5:45:5:45 | + | semmle.label | 1 | -| printAst.ql:5:45:5:45 | + | printAst.ql:5:45:5:45 | + | semmle.order | 60 | -| printAst.ql:5:47:5:47 | Literal | printAst.ql:5:47:5:47 | 2 | semmle.label | 1 | -| printAst.ql:5:47:5:47 | Literal | printAst.ql:5:47:5:47 | 2 | semmle.order | 62 | +| printAst.ql:1:8:1:25 | QualModuleExpr | printAst.ql:1:18:1:25 | printAst | semmle.order | 128 | graphProperties | semmle.graphKind | tree | diff --git a/ql/test/printAst/printAst.ql b/ql/test/printAst/printAst.ql index ea1573a9bf54..5be171203f8d 100644 --- a/ql/test/printAst/printAst.ql +++ b/ql/test/printAst/printAst.ql @@ -1,6 +1 @@ import codeql_ql.printAst - -predicate foobar() { - // this exists to test the printAst query - exists(int i | i = [1 .. 100] | i * 3 = i + 2) -}