@@ -201,6 +201,25 @@ class ProcessBlockCfgNode extends NamedBlockCfgNode {
201
201
PipelineParameter getPipelineParameter ( ) { result = block .getEnclosingFunction ( ) .getAParameter ( ) }
202
202
}
203
203
204
+ private class StmtBlockChildMapping extends NonExprChildMapping , StmtBlock {
205
+ override predicate relevantChild ( Ast n ) { n = this .getAStmt ( ) or n = this .getAnElement ( ) }
206
+ }
207
+
208
+ class StmtBlockCfgNode extends AstCfgNode {
209
+ StmtBlockChildMapping block ;
210
+
211
+ StmtBlockCfgNode ( ) { this .getAstNode ( ) = block }
212
+
213
+ StmtBlock getBlock ( ) { result = block }
214
+
215
+ StmtCfgNode getStmt ( int i ) { block .hasCfgChild ( block .getStmt ( i ) , this , result ) }
216
+
217
+ StmtCfgNode getAStmt ( ) { block .hasCfgChild ( block .getAStmt ( ) , this , result ) }
218
+
219
+ /** Gets an AST element that may be returned from this `StmtBlockCfgNode`. */
220
+ AstCfgNode getAnElement ( ) { block .hasCfgChild ( block .getAnElement ( ) , this , result ) }
221
+ }
222
+
204
223
/** Provides classes for control-flow nodes that wrap AST expressions. */
205
224
module ExprNodes {
206
225
private class VarAccessChildMapping extends ExprChildMapping , VarAccess {
@@ -418,6 +437,22 @@ module ExprNodes {
418
437
class IndexCfgReadNode extends IndexCfgNode {
419
438
IndexCfgReadNode ( ) { this .getExpr ( ) instanceof IndexExprRead }
420
439
}
440
+
441
+ class ArrayExprChildMapping extends ExprChildMapping , ArrayExpr {
442
+ override predicate relevantChild ( Ast n ) { n = this .getStmtBlock ( ) or n = this .getAnElement ( ) }
443
+ }
444
+
445
+ class ArrayExprCfgNode extends ExprCfgNode {
446
+ override string getAPrimaryQlClass ( ) { result = "ArrayExprCfgNode" }
447
+
448
+ override ArrayExprChildMapping e ;
449
+
450
+ ExprCfgNode getElement ( int i ) { e .hasCfgChild ( e .getElement ( i ) , this , result ) }
451
+
452
+ ExprCfgNode getAnElement ( ) { result = this .getElement ( _) }
453
+
454
+ StmtBlockCfgNode getStmtBlock ( ) { e .hasCfgChild ( e .getStmtBlock ( ) , this , result ) }
455
+ }
421
456
}
422
457
423
458
module StmtNodes {
0 commit comments