Skip to content

Commit 89fecce

Browse files
committed
feat(ast): Add ident support
1 parent a8f249b commit 89fecce

File tree

4 files changed

+47
-7
lines changed

4 files changed

+47
-7
lines changed

ql/lib/codeql/bicep/ast/Idents.qll

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
private import AstNodes
2+
private import Expr
3+
private import internal.Idents
4+
private import internal.Identifier
5+
private import internal.Parameter
6+
7+
/**
8+
* A Idents AST node.
9+
*/
10+
abstract class Idents extends Expr instanceof IdentsImpl {
11+
abstract string getName();
12+
}
13+
14+
/**
15+
* A Identifier unknown AST node.
16+
*/
17+
class Identifier extends Idents instanceof IdentifierImpl {
18+
override string getName() { result = IdentifierImpl.super.getName() }
19+
}

ql/lib/codeql/bicep/ast/internal/AstNodes.qll

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@ newtype TAstNode =
7777
class TLiterals =
7878
TInterpolation or TNull or TNullableReturnType or TNullableType or TString or TStringContent;
7979

80+
/**
81+
* A identifier in a SQL program
82+
*/
83+
class TIdents = TIdentifier;
84+
8085
/**
8186
* A statement in a Bicep program
8287
*/
@@ -88,10 +93,10 @@ class TStmts =
8893
* A expersion value in a Bicep program
8994
*/
9095
class TExpr =
91-
TLiterals or TConditionalExpr or TAssignmentExpression or TBinaryExpression or TCallExpression or
92-
TExpression or TLambdaExpression or TMemberExpression or TParenthesizedExpression or
93-
TPrimaryExpression or TResourceExpression or TSubscriptExpression or TTernaryExpression or
94-
TUnaryExpression;
96+
TLiterals or TConditionalExpr or TStmts or TIdents or TAssignmentExpression or
97+
TBinaryExpression or TCallExpression or TExpression or TLambdaExpression or
98+
TMemberExpression or TParenthesizedExpression or TPrimaryExpression or TResourceExpression or
99+
TSubscriptExpression or TTernaryExpression or TUnaryExpression;
95100

96101
/**
97102
* A expersion value in a Bicep program

ql/lib/codeql/bicep/ast/internal/Identifier.qll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@
66
private import AstNodes
77
private import TreeSitter
88
private import codeql.bicep.ast.AstNodes
9+
private import Idents
910

1011
/**
1112
* A Identifier AST Node.
1213
*/
13-
class IdentifierImpl extends TIdentifier, AstNode {
14+
class IdentifierImpl extends TIdentifier, IdentsImpl {
1415
private BICEP::Identifier ast;
1516

1617
override string getAPrimaryQlClass() { result = "Identifier" }
@@ -19,6 +20,5 @@ class IdentifierImpl extends TIdentifier, AstNode {
1920

2021
override string toString() { result = ast.toString() }
2122

22-
23-
23+
override string getName() { result = ast.getValue() }
2424
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
private import AstNodes
2+
private import TreeSitter
3+
private import codeql.bicep.ast.AstNodes
4+
5+
6+
/**
7+
* Literal statements.
8+
*/
9+
class IdentsImpl extends AstNode, TIdents {
10+
override string getAPrimaryQlClass() { result = "Idents" }
11+
12+
/**
13+
* Get the value of the literal
14+
*/
15+
abstract string getName();
16+
}

0 commit comments

Comments
 (0)