@@ -340,6 +340,14 @@ private module ArgumentNodes {
340340 )
341341 }
342342 }
343+
344+ class SummaryArgumentNode extends SummaryNode , ArgumentNode {
345+ SummaryArgumentNode ( ) { FlowSummaryImpl:: Private:: summaryArgumentNode ( _, this , _) }
346+
347+ override predicate argumentOf ( DataFlowCall call , ArgumentPosition pos ) {
348+ FlowSummaryImpl:: Private:: summaryArgumentNode ( call , this , pos )
349+ }
350+ }
343351}
344352
345353import ArgumentNodes
@@ -410,6 +418,12 @@ private module OutNodes {
410418 }
411419 }
412420
421+ class SummaryOutNode extends OutNode , SummaryNode {
422+ override DataFlowCall getCall ( ReturnKind kind ) {
423+ FlowSummaryImpl:: Private:: summaryOutNode ( result , this , kind )
424+ }
425+ }
426+
413427 class InOutUpdateArgNode extends OutNode , ExprPostUpdateNode {
414428 Argument arg ;
415429
@@ -596,6 +610,9 @@ predicate lambdaCreation(Node creation, LambdaCallKind kind, DataFlowCallable c)
596610predicate lambdaCall ( DataFlowCall call , LambdaCallKind kind , Node receiver ) {
597611 kind = TLambdaCallKind ( ) and
598612 receiver .asExpr ( ) = call .asCall ( ) .getExpr ( ) .( ApplyExpr ) .getFunction ( )
613+ or
614+ kind = TLambdaCallKind ( ) and
615+ receiver = call .( SummaryCall ) .getReceiver ( )
599616}
600617
601618/** Extra data-flow steps needed for lambda flow analysis. */
0 commit comments