mirror of
https://github.com/github/codeql.git
synced 2026-02-08 11:11:06 +01:00
extremely minimal AST layer
This commit is contained in:
committed by
GitHub
parent
f2edd7724c
commit
344c19f049
24
ql/src/codeql_ql/ast/Ast.qll
Normal file
24
ql/src/codeql_ql/ast/Ast.qll
Normal file
@@ -0,0 +1,24 @@
|
||||
import ql
|
||||
private import codeql_ql.ast.internal.AstNodes
|
||||
|
||||
/** An AST node of a QL program */
|
||||
class AstNode extends TAstNode {
|
||||
string toString() { result = "ASTNode" }
|
||||
|
||||
Location getLocation() { result = toGenerated(this).getLocation() }
|
||||
}
|
||||
|
||||
/**
|
||||
* A classless predicate.
|
||||
*/
|
||||
class ClasslessPredicate extends TClasslessPredicate, AstNode {
|
||||
Generated::ModuleMember member;
|
||||
Generated::ClasslessPredicate pred;
|
||||
|
||||
ClasslessPredicate() { this = TClasslessPredicate(member, pred) }
|
||||
|
||||
predicate isPrivate() {
|
||||
member.getAFieldOrChild().(Generated::Annotation).getName().getValue() = "private"
|
||||
}
|
||||
}
|
||||
|
||||
13
ql/src/codeql_ql/ast/internal/AstNodes.qll
Normal file
13
ql/src/codeql_ql/ast/internal/AstNodes.qll
Normal file
@@ -0,0 +1,13 @@
|
||||
import codeql_ql.ast.Ast as AST
|
||||
import TreeSitter
|
||||
|
||||
cached
|
||||
newtype TAstNode =
|
||||
TClasslessPredicate(Generated::ModuleMember member, Generated::ClasslessPredicate pred) {
|
||||
pred.getParent() = member
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the underlying TreeSitter entity for a given AST node.
|
||||
*/
|
||||
Generated::AstNode toGenerated(AST::AstNode n) { n = TClasslessPredicate(_, result) }
|
||||
@@ -1,3 +1,3 @@
|
||||
import codeql.Locations
|
||||
import codeql.files.FileSystem
|
||||
import codeql_ql.ast.internal.TreeSitter::Generated
|
||||
import codeql_ql.ast.Ast
|
||||
Reference in New Issue
Block a user