1
+ /** Provides classes representing nodes in a control flow graph. */
2
+
3
+ private import bicep
4
+ private import BasicBlocks
5
+ private import ControlFlowGraph
6
+ private import internal.ControlFlowGraphImpl as CfgImpl
7
+
8
+ /** A control-flow node that wraps an AST expression. */
9
+ class ExprCfgNode extends CfgImpl:: AstCfgNode {
10
+ string getAPrimaryQlClass ( ) { result = "ExprCfgNode" }
11
+
12
+ Expr e ;
13
+
14
+ ExprCfgNode ( ) { e = this .getAstNode ( ) }
15
+
16
+ /** Gets the underlying expression. */
17
+ Expr getExpr ( ) { result = e }
18
+ }
19
+
20
+ /** A control-flow node that wraps an AST statement. */
21
+ class StmtsCfgNode extends CfgImpl:: AstCfgNode {
22
+ string getAPrimaryQlClass ( ) { result = "StmtsCfgNode" }
23
+
24
+ Stmts s ;
25
+
26
+ StmtsCfgNode ( ) { s = this .getAstNode ( ) }
27
+
28
+ /** Gets the underlying expression. */
29
+ Stmts getStmt ( ) { result = s }
30
+ }
31
+
32
+ /** Provides classes for control-flow nodes that wrap AST expressions. */
33
+ module ExprNodes {
34
+ class CallCfgNode extends ExprCfgNode {
35
+ override string getAPrimaryQlClass ( ) { result = "CallCfgNode" }
36
+
37
+ override CallExpression e ;
38
+
39
+ override CallExpression getExpr ( ) { result = super .getExpr ( ) }
40
+ }
41
+ }
42
+
43
+ module StmtNodes {
44
+ /** A control-flow node that wraps a `Cmd` AST expression. */
45
+ class CallCfgNode extends StmtsCfgNode {
46
+ override string getAPrimaryQlClass ( ) { result = "CallCfgNode" }
47
+
48
+ override UserDefinedFunction s ;
49
+
50
+ override UserDefinedFunction getStmt ( ) { result = super .getStmt ( ) }
51
+ }
52
+ }
0 commit comments