Skip to content

Commit 41a0bf1

Browse files
committed
Move some AstNodes to Ast.qll, fix compilation error.
1 parent 7955a8b commit 41a0bf1

4 files changed

Lines changed: 57 additions & 56 deletions

File tree

ql/src/codeql_ql/ast/Ast.qll

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ private import codeql_ql.ast.internal.Module
44
private import codeql_ql.ast.internal.Predicate
55
import codeql_ql.ast.internal.Type
66
private import codeql_ql.ast.internal.Variable
7+
private import codeql_ql.ast.internal.Builtins
78

89
bindingset[name]
910
private string directMember(string name) { result = name + "()" }
@@ -191,6 +192,57 @@ class Select extends TSelect, AstNode {
191192
override string getAPrimaryQlClass() { result = "Select" }
192193
}
193194

195+
class PredicateOrBuiltin extends TPredOrBuiltin, AstNode {
196+
string getName() { none() }
197+
198+
Type getDeclaringType() { none() }
199+
200+
Type getParameterType(int i) { none() }
201+
202+
Type getReturnType() { none() }
203+
204+
int getArity() { result = count(getParameterType(_)) }
205+
206+
predicate isPrivate() { none() }
207+
}
208+
209+
class BuiltinPredicate extends PredicateOrBuiltin, TBuiltin {
210+
override string toString() { result = getName() }
211+
212+
override string getAPrimaryQlClass() { result = "BuiltinPredicate" }
213+
}
214+
215+
private class BuiltinClassless extends BuiltinPredicate, TBuiltinClassless {
216+
string name;
217+
string ret;
218+
string args;
219+
220+
BuiltinClassless() { this = TBuiltinClassless(ret, name, args) }
221+
222+
override string getName() { result = name }
223+
224+
override PrimitiveType getReturnType() { result.getName() = ret }
225+
226+
override PrimitiveType getParameterType(int i) { result.getName() = getArgType(args, i) }
227+
}
228+
229+
private class BuiltinMember extends BuiltinPredicate, TBuiltinMember {
230+
string name;
231+
string qual;
232+
string ret;
233+
string args;
234+
235+
BuiltinMember() { this = TBuiltinMember(qual, ret, name, args) }
236+
237+
override string getName() { result = name }
238+
239+
override PrimitiveType getReturnType() { result.getName() = ret }
240+
241+
override PrimitiveType getParameterType(int i) { result.getName() = getArgType(args, i) }
242+
243+
override PrimitiveType getDeclaringType() { result.getName() = qual }
244+
}
245+
194246
/**
195247
* A QL predicate.
196248
* Either a classless predicate, a class predicate, or a characteristic predicate.
@@ -812,7 +864,7 @@ class NewTypeBranch extends TNewTypeBranch, PredicateOrBuiltin, TypeDeclaration
812864

813865
override Type getDeclaringType() { none() }
814866

815-
predicate isPrivate() { this.getNewType().isPrivate() }
867+
override predicate isPrivate() { this.getNewType().isPrivate() }
816868

817869
override QLDoc getQLDoc() { toGenerated(result) = branch.getChild(_) }
818870

ql/src/codeql_ql/ast/internal/AstNodes.qll

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,9 @@ Generated::AstNode toGenerated(AST::AstNode n) {
199199

200200
class TPredicate = TCharPred or TClasslessPredicate or TClassPredicate or TDBRelation;
201201

202-
class TPredOrBuiltin = TPredicate or TNewTypeBranch or TBuiltinClassless or TBuiltinMember;
202+
class TPredOrBuiltin = TPredicate or TNewTypeBranch or TBuiltin;
203+
204+
class TBuiltin = TBuiltinClassless or TBuiltinMember;
203205

204206
class TModuleMember = TModuleDeclaration or TImport or TSelect or TQLDoc;
205207

ql/src/codeql_ql/ast/internal/Predicate.qll

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -122,59 +122,6 @@ private module Cached {
122122

123123
import Cached
124124

125-
class PredicateOrBuiltin extends TPredOrBuiltin, AstNode {
126-
string getName() { none() }
127-
128-
Type getDeclaringType() { none() }
129-
130-
Type getParameterType(int i) { none() }
131-
132-
Type getReturnType() { none() }
133-
134-
int getArity() { result = count(getParameterType(_)) }
135-
136-
predicate isPrivate() { none() }
137-
}
138-
139-
private class TBuiltin = TBuiltinClassless or TBuiltinMember;
140-
141-
class BuiltinPredicate extends PredicateOrBuiltin, TBuiltin {
142-
override string toString() { result = getName() }
143-
144-
override string getAPrimaryQlClass() { result = "BuiltinPredicate" }
145-
}
146-
147-
private class BuiltinClassless extends BuiltinPredicate, TBuiltinClassless {
148-
string name;
149-
string ret;
150-
string args;
151-
152-
BuiltinClassless() { this = TBuiltinClassless(ret, name, args) }
153-
154-
override string getName() { result = name }
155-
156-
override PrimitiveType getReturnType() { result.getName() = ret }
157-
158-
override PrimitiveType getParameterType(int i) { result.getName() = getArgType(args, i) }
159-
}
160-
161-
private class BuiltinMember extends BuiltinPredicate, TBuiltinMember {
162-
string name;
163-
string qual;
164-
string ret;
165-
string args;
166-
167-
BuiltinMember() { this = TBuiltinMember(qual, ret, name, args) }
168-
169-
override string getName() { result = name }
170-
171-
override PrimitiveType getReturnType() { result.getName() = ret }
172-
173-
override PrimitiveType getParameterType(int i) { result.getName() = getArgType(args, i) }
174-
175-
override PrimitiveType getDeclaringType() { result.getName() = qual }
176-
}
177-
178125
module PredConsistency {
179126
query predicate noResolvePredicateExpr(PredicateExpr pe) {
180127
not resolvePredicateExpr(pe, _) and

ql/test/callgraph/callgraph.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
import ql
22

3-
query AstNode getTarget(Call call) { result = call.getTarget().getDeclaration() }
3+
query AstNode getTarget(Call call) { result = call.getTarget() }

0 commit comments

Comments
 (0)