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