@@ -14,16 +14,27 @@ private import DataFlowImplSpecific::Public
1414module Input implements InputSig< Location , DataFlowImplSpecific:: PythonDataFlow > {
1515 private import codeql.util.Void
1616
17- class SummarizedCallableBase = string ;
17+ class SummarizedCallableBase extends string {
18+ bindingset [ this ]
19+ SummarizedCallableBase ( ) { exists ( this ) }
1820
19- class SourceBase = Void ;
21+ Location getLocation ( ) { none ( ) }
22+ }
23+
24+ class SourceBase extends Void {
25+ Location getLocation ( ) { none ( ) }
26+ }
2027
21- class SinkBase = Void ;
28+ class SinkBase = SourceBase ;
2229
23- class FlowSummaryCallBase = Void ;
30+ class FlowSummaryCallBase = SourceBase ;
2431
2532 predicate callableFromSource ( SummarizedCallableBase c ) { none ( ) }
2633
34+ DataFlowCallable getSummarizedCallableAsDataFlowCallable ( SummarizedCallableBase c ) {
35+ result .asLibraryCallable ( ) = c
36+ }
37+
2738 ArgumentPosition callbackSelfParameterPosition ( ) { result .isLambdaSelf ( ) }
2839
2940 ReturnKind getStandardReturnValueKind ( ) { any ( ) }
@@ -112,11 +123,47 @@ module Input implements InputSig<Location, DataFlowImplSpecific::PythonDataFlow>
112123
113124private import Make< Location , DataFlowImplSpecific:: PythonDataFlow , Input > as Impl
114125
115- private module StepsInput implements Impl:: Private:: StepsInputSig {
116- Impl:: Private:: SummaryNode getSummaryNode ( Node n ) {
117- result = n .( FlowSummaryNode ) .getSummaryNode ( )
126+ private module Input2 implements Impl:: Private:: InputSig2 {
127+ private import codeql.util.Void
128+
129+ class SourceSinkReportingElement extends Void {
130+ Location getLocation ( ) { none ( ) }
131+
132+ DataFlowCallable getEnclosingCallable ( ) { none ( ) }
133+ }
134+
135+ SourceSinkReportingElement getSourceEntryElement (
136+ Impl:: Public:: SourceElement source , Impl:: Private:: SummaryComponent sc
137+ ) {
138+ none ( )
139+ }
140+
141+ SourceSinkReportingElement getNextElement (
142+ SourceSinkReportingElement prev , Impl:: Private:: SummaryComponent sc
143+ ) {
144+ none ( )
118145 }
119146
147+ bindingset [ e, sc]
148+ Node getSourceExitNode ( SourceSinkReportingElement e , Impl:: Private:: SummaryComponent sc ) {
149+ none ( )
150+ }
151+
152+ SourceSinkReportingElement getSinkExitElement (
153+ Impl:: Public:: SinkElement sink , Impl:: Private:: SummaryComponent sc
154+ ) {
155+ none ( )
156+ }
157+
158+ bindingset [ e, sc]
159+ Node getSinkEntryNode ( SourceSinkReportingElement e , Impl:: Private:: SummaryComponent sc ) { none ( ) }
160+ }
161+
162+ private import Impl:: Private:: Make2< Input2 > as Impl2
163+
164+ private module StepsInput implements Impl2:: StepsInputSig {
165+ Impl2:: SummaryNode getSummaryNode ( Node n ) { result = n .( FlowSummaryNode ) .getSummaryNode ( ) }
166+
120167 overlay [ global]
121168 DataFlowCall getACall ( Public:: SummarizedCallable sc ) {
122169 result =
@@ -125,18 +172,13 @@ private module StepsInput implements Impl::Private::StepsInputSig {
125172 sc .( LibraryCallable ) .getACallSimple ( ) .asCfgNode ( )
126173 ] )
127174 }
128-
129- DataFlowCallable getSourceNodeEnclosingCallable ( Input:: SourceBase source ) { none ( ) }
130-
131- Node getSourceNode ( Input:: SourceBase source , Impl:: Private:: SummaryComponentStack s ) { none ( ) }
132-
133- Node getSinkNode ( Input:: SinkBase sink , Impl:: Private:: SummaryComponent sc ) { none ( ) }
134175}
135176
136177module Private {
137178 import Impl:: Private
179+ import Impl2
138180
139- module Steps = Impl :: Private :: Steps< StepsInput > ;
181+ module Steps = Impl2 :: Steps< StepsInput > ;
140182
141183 /**
142184 * Provides predicates for constructing summary components.
0 commit comments