@@ -320,7 +320,9 @@ class ReturningStatementNode extends NodeImpl, TReturningNode {
320320}
321321
322322private module ParameterNodes {
323- abstract class ParameterNodeImpl extends ParameterNode , NodeImpl {
323+ abstract class ParameterNodeImpl extends NodeImpl {
324+ abstract Parameter getParameter ( ) ;
325+
324326 abstract predicate isSourceParameterOf ( Callable c , int i ) ;
325327
326328 predicate isParameterOf ( DataFlowCallable c , int i ) {
@@ -341,6 +343,10 @@ private module ParameterNodes {
341343
342344 override predicate isSourceParameterOf ( Callable c , int i ) { c .getParameter ( i ) = parameter }
343345
346+ override predicate isParameterOf ( DataFlowCallable c , int i ) {
347+ this .isSourceParameterOf ( c .asCallable ( ) , i )
348+ }
349+
344350 override CfgScope getCfgScope ( ) { result = parameter .getCallable ( ) }
345351
346352 override Location getLocationImpl ( ) { result = parameter .getLocation ( ) }
@@ -359,8 +365,14 @@ private module ParameterNodes {
359365
360366 final MethodBase getMethod ( ) { result = method }
361367
368+ override Parameter getParameter ( ) { none ( ) }
369+
362370 override predicate isSourceParameterOf ( Callable c , int i ) { method = c and i = - 1 }
363371
372+ override predicate isParameterOf ( DataFlowCallable c , int i ) {
373+ this .isSourceParameterOf ( c .asCallable ( ) , i )
374+ }
375+
364376 override CfgScope getCfgScope ( ) { result = method }
365377
366378 override Location getLocationImpl ( ) { result = method .getLocation ( ) }
@@ -385,6 +397,10 @@ private module ParameterNodes {
385397
386398 override predicate isSourceParameterOf ( Callable c , int i ) { c = method and i = - 2 }
387399
400+ override predicate isParameterOf ( DataFlowCallable c , int i ) {
401+ this .isSourceParameterOf ( c .asCallable ( ) , i )
402+ }
403+
388404 override CfgScope getCfgScope ( ) { result = method }
389405
390406 override Location getLocationImpl ( ) {
@@ -407,6 +423,8 @@ private module ParameterNodes {
407423
408424 SummaryParameterNode ( ) { this = TSummaryParameterNode ( sc , pos ) }
409425
426+ override Parameter getParameter ( ) { none ( ) }
427+
410428 override predicate isSourceParameterOf ( Callable c , int i ) { none ( ) }
411429
412430 override predicate isParameterOf ( DataFlowCallable c , int i ) { sc = c and i = pos }
@@ -442,7 +460,7 @@ class SummaryNode extends NodeImpl, TSummaryNode {
442460/** A data-flow node that represents a call argument. */
443461abstract class ArgumentNode extends Node {
444462 /** Holds if this argument occurs at the given position in the given call. */
445- predicate argumentOf ( DataFlowCall call , int pos ) { this . sourceArgumentOf ( call . asCall ( ) , pos ) }
463+ abstract predicate argumentOf ( DataFlowCall call , int pos ) ;
446464
447465 abstract predicate sourceArgumentOf ( CfgNodes:: ExprNodes:: CallCfgNode call , int pos ) ;
448466
@@ -457,6 +475,10 @@ private module ArgumentNodes {
457475
458476 ExplicitArgumentNode ( ) { this .asExpr ( ) = arg }
459477
478+ override predicate argumentOf ( DataFlowCall call , int pos ) {
479+ this .sourceArgumentOf ( call .asCall ( ) , pos )
480+ }
481+
460482 override predicate sourceArgumentOf ( CfgNodes:: ExprNodes:: CallCfgNode call , int pos ) {
461483 arg .isArgumentOf ( call , pos )
462484 }
@@ -474,6 +496,10 @@ private module ArgumentNodes {
474496 exists ( CfgNodes:: ExprNodes:: CallCfgNode c | c .getBlock ( ) = this .asExpr ( ) )
475497 }
476498
499+ override predicate argumentOf ( DataFlowCall call , int pos ) {
500+ this .sourceArgumentOf ( call .asCall ( ) , pos )
501+ }
502+
477503 override predicate sourceArgumentOf ( CfgNodes:: ExprNodes:: CallCfgNode call , int pos ) {
478504 pos = - 2 and
479505 (
0 commit comments