@@ -128,6 +128,8 @@ abstract private class NonExprChildMapping extends ChildMapping {
128128abstract private class AbstractCallCfgNode extends AstCfgNode {
129129 override string getAPrimaryQlClass ( ) { result = "CfgCall" }
130130
131+ abstract string getName ( ) ;
132+
131133 ExprCfgNode getQualifier ( ) { none ( ) }
132134
133135 abstract ExprCfgNode getArgument ( int i ) ;
@@ -137,6 +139,8 @@ abstract private class AbstractCallCfgNode extends AstCfgNode {
137139 abstract ExprCfgNode getNamedArgument ( string name ) ;
138140
139141 abstract ExprCfgNode getAnArgument ( ) ;
142+
143+ abstract ExprCfgNode getCommand ( ) ;
140144}
141145
142146final class CallCfgNode = AbstractCallCfgNode ;
@@ -221,6 +225,10 @@ module ExprNodes {
221225 final override ExprCfgNode getNamedArgument ( string name ) { none ( ) }
222226
223227 final override ExprCfgNode getAnArgument ( ) { e .hasCfgChild ( e .getAnArgument ( ) , this , result ) }
228+
229+ final override string getName ( ) { none ( ) }
230+
231+ final override ExprCfgNode getCommand ( ) { none ( ) }
224232 }
225233
226234 /** A control-flow node that wraps a qualifier expression. */
@@ -308,7 +316,9 @@ module StmtNodes {
308316
309317 override ExprCfgNode getAnArgument ( ) { s .hasCfgChild ( s .getAnArgument ( ) , this , result ) }
310318
311- ExprCfgNode getCommand ( ) { s .hasCfgChild ( s .getCommand ( ) , this , result ) }
319+ final override ExprCfgNode getCommand ( ) { s .hasCfgChild ( s .getCommand ( ) , this , result ) }
320+
321+ final override string getName ( ) { result = s .getCmdName ( ) .getValue ( ) .getValue ( ) }
312322 }
313323
314324 private class AssignStmtChildMapping extends NonExprChildMapping , AssignStmt {
0 commit comments