mirror of
https://github.com/github/codeql.git
synced 2026-02-09 19:51:07 +01:00
Move some AstNodes to Ast.qll, fix compilation error.
This commit is contained in:
@@ -4,6 +4,7 @@ private import codeql_ql.ast.internal.Module
|
||||
private import codeql_ql.ast.internal.Predicate
|
||||
import codeql_ql.ast.internal.Type
|
||||
private import codeql_ql.ast.internal.Variable
|
||||
private import codeql_ql.ast.internal.Builtins
|
||||
|
||||
bindingset[name]
|
||||
private string directMember(string name) { result = name + "()" }
|
||||
@@ -191,6 +192,57 @@ class Select extends TSelect, AstNode {
|
||||
override string getAPrimaryQlClass() { result = "Select" }
|
||||
}
|
||||
|
||||
class PredicateOrBuiltin extends TPredOrBuiltin, AstNode {
|
||||
string getName() { none() }
|
||||
|
||||
Type getDeclaringType() { none() }
|
||||
|
||||
Type getParameterType(int i) { none() }
|
||||
|
||||
Type getReturnType() { none() }
|
||||
|
||||
int getArity() { result = count(getParameterType(_)) }
|
||||
|
||||
predicate isPrivate() { none() }
|
||||
}
|
||||
|
||||
class BuiltinPredicate extends PredicateOrBuiltin, TBuiltin {
|
||||
override string toString() { result = getName() }
|
||||
|
||||
override string getAPrimaryQlClass() { result = "BuiltinPredicate" }
|
||||
}
|
||||
|
||||
private class BuiltinClassless extends BuiltinPredicate, TBuiltinClassless {
|
||||
string name;
|
||||
string ret;
|
||||
string args;
|
||||
|
||||
BuiltinClassless() { this = TBuiltinClassless(ret, name, args) }
|
||||
|
||||
override string getName() { result = name }
|
||||
|
||||
override PrimitiveType getReturnType() { result.getName() = ret }
|
||||
|
||||
override PrimitiveType getParameterType(int i) { result.getName() = getArgType(args, i) }
|
||||
}
|
||||
|
||||
private class BuiltinMember extends BuiltinPredicate, TBuiltinMember {
|
||||
string name;
|
||||
string qual;
|
||||
string ret;
|
||||
string args;
|
||||
|
||||
BuiltinMember() { this = TBuiltinMember(qual, ret, name, args) }
|
||||
|
||||
override string getName() { result = name }
|
||||
|
||||
override PrimitiveType getReturnType() { result.getName() = ret }
|
||||
|
||||
override PrimitiveType getParameterType(int i) { result.getName() = getArgType(args, i) }
|
||||
|
||||
override PrimitiveType getDeclaringType() { result.getName() = qual }
|
||||
}
|
||||
|
||||
/**
|
||||
* A QL predicate.
|
||||
* Either a classless predicate, a class predicate, or a characteristic predicate.
|
||||
@@ -812,7 +864,7 @@ class NewTypeBranch extends TNewTypeBranch, PredicateOrBuiltin, TypeDeclaration
|
||||
|
||||
override Type getDeclaringType() { none() }
|
||||
|
||||
predicate isPrivate() { this.getNewType().isPrivate() }
|
||||
override predicate isPrivate() { this.getNewType().isPrivate() }
|
||||
|
||||
override QLDoc getQLDoc() { toGenerated(result) = branch.getChild(_) }
|
||||
|
||||
|
||||
@@ -199,7 +199,9 @@ Generated::AstNode toGenerated(AST::AstNode n) {
|
||||
|
||||
class TPredicate = TCharPred or TClasslessPredicate or TClassPredicate or TDBRelation;
|
||||
|
||||
class TPredOrBuiltin = TPredicate or TNewTypeBranch or TBuiltinClassless or TBuiltinMember;
|
||||
class TPredOrBuiltin = TPredicate or TNewTypeBranch or TBuiltin;
|
||||
|
||||
class TBuiltin = TBuiltinClassless or TBuiltinMember;
|
||||
|
||||
class TModuleMember = TModuleDeclaration or TImport or TSelect or TQLDoc;
|
||||
|
||||
|
||||
@@ -122,59 +122,6 @@ private module Cached {
|
||||
|
||||
import Cached
|
||||
|
||||
class PredicateOrBuiltin extends TPredOrBuiltin, AstNode {
|
||||
string getName() { none() }
|
||||
|
||||
Type getDeclaringType() { none() }
|
||||
|
||||
Type getParameterType(int i) { none() }
|
||||
|
||||
Type getReturnType() { none() }
|
||||
|
||||
int getArity() { result = count(getParameterType(_)) }
|
||||
|
||||
predicate isPrivate() { none() }
|
||||
}
|
||||
|
||||
private class TBuiltin = TBuiltinClassless or TBuiltinMember;
|
||||
|
||||
class BuiltinPredicate extends PredicateOrBuiltin, TBuiltin {
|
||||
override string toString() { result = getName() }
|
||||
|
||||
override string getAPrimaryQlClass() { result = "BuiltinPredicate" }
|
||||
}
|
||||
|
||||
private class BuiltinClassless extends BuiltinPredicate, TBuiltinClassless {
|
||||
string name;
|
||||
string ret;
|
||||
string args;
|
||||
|
||||
BuiltinClassless() { this = TBuiltinClassless(ret, name, args) }
|
||||
|
||||
override string getName() { result = name }
|
||||
|
||||
override PrimitiveType getReturnType() { result.getName() = ret }
|
||||
|
||||
override PrimitiveType getParameterType(int i) { result.getName() = getArgType(args, i) }
|
||||
}
|
||||
|
||||
private class BuiltinMember extends BuiltinPredicate, TBuiltinMember {
|
||||
string name;
|
||||
string qual;
|
||||
string ret;
|
||||
string args;
|
||||
|
||||
BuiltinMember() { this = TBuiltinMember(qual, ret, name, args) }
|
||||
|
||||
override string getName() { result = name }
|
||||
|
||||
override PrimitiveType getReturnType() { result.getName() = ret }
|
||||
|
||||
override PrimitiveType getParameterType(int i) { result.getName() = getArgType(args, i) }
|
||||
|
||||
override PrimitiveType getDeclaringType() { result.getName() = qual }
|
||||
}
|
||||
|
||||
module PredConsistency {
|
||||
query predicate noResolvePredicateExpr(PredicateExpr pe) {
|
||||
not resolvePredicateExpr(pe, _) and
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
import ql
|
||||
|
||||
query AstNode getTarget(Call call) { result = call.getTarget().getDeclaration() }
|
||||
query AstNode getTarget(Call call) { result = call.getTarget() }
|
||||
|
||||
Reference in New Issue
Block a user