@@ -37,11 +37,17 @@ module Input implements InputSig<Location, DataFlowImplSpecific::JavaDataFlow> {
3737 sc .asCallable ( ) = any ( Callable c | c .fromSource ( ) and not c .isStub ( ) )
3838 }
3939
40- class SourceBase = Void ;
40+ class SourceBase extends Void {
41+ Location getLocation ( ) { none ( ) }
42+ }
43+
44+ class SinkBase = SourceBase ;
4145
42- class SinkBase = Void ;
46+ class FlowSummaryCallBase = SourceBase ;
4347
44- class FlowSummaryCallBase = Void ;
48+ DataFlowCallable getSummarizedCallableAsDataFlowCallable ( SummarizedCallableBase c ) {
49+ result .asSummarizedCallable ( ) = c
50+ }
4551
4652 predicate neutralElement (
4753 Input:: SummarizedCallableBase c , string kind , string provenance , boolean isExact
@@ -110,7 +116,45 @@ module Input implements InputSig<Location, DataFlowImplSpecific::JavaDataFlow> {
110116
111117private import Make< Location , DataFlowImplSpecific:: JavaDataFlow , Input > as Impl
112118
113- private module TypesInput implements Impl:: Private:: TypesInputSig {
119+ private module Input2 implements Impl:: Private:: InputSig2 {
120+ private import codeql.util.Void
121+
122+ class SourceSinkReportingElement extends Void {
123+ Location getLocation ( ) { none ( ) }
124+
125+ DataFlowCallable getEnclosingCallable ( ) { none ( ) }
126+ }
127+
128+ SourceSinkReportingElement getSourceEntryElement (
129+ Impl:: Public:: SourceElement source , Impl:: Private:: SummaryComponent sc
130+ ) {
131+ none ( )
132+ }
133+
134+ SourceSinkReportingElement getNextElement (
135+ SourceSinkReportingElement prev , Impl:: Private:: SummaryComponent sc
136+ ) {
137+ none ( )
138+ }
139+
140+ bindingset [ e, sc]
141+ Node getSourceExitNode ( SourceSinkReportingElement e , Impl:: Private:: SummaryComponent sc ) {
142+ none ( )
143+ }
144+
145+ SourceSinkReportingElement getSinkExitElement (
146+ Impl:: Public:: SinkElement sink , Impl:: Private:: SummaryComponent sc
147+ ) {
148+ none ( )
149+ }
150+
151+ bindingset [ e, sc]
152+ Node getSinkEntryNode ( SourceSinkReportingElement e , Impl:: Private:: SummaryComponent sc ) { none ( ) }
153+ }
154+
155+ private import Impl:: Private:: Make2< Input2 > as Impl2
156+
157+ private module TypesInput implements Impl2:: TypesInputSig {
114158 DataFlowType getSyntheticGlobalType ( Impl:: Private:: SyntheticGlobal sg ) {
115159 exists ( sg ) and
116160 result instanceof TypeObject
@@ -138,27 +182,15 @@ private module TypesInput implements Impl::Private::TypesInputSig {
138182 exists ( rk )
139183 }
140184
141- DataFlowType getSourceType ( Input:: SourceBase source , Impl:: Private:: SummaryComponentStack s ) {
142- none ( )
143- }
144-
145- DataFlowType getSinkType ( Input:: SinkBase sink , Impl:: Private:: SummaryComponent sc ) { none ( ) }
185+ DataFlowType getSourceSinkType ( Input2:: SourceSinkReportingElement e ) { none ( ) }
146186}
147187
148- private module StepsInput implements Impl:: Private:: StepsInputSig {
149- Impl:: Private:: SummaryNode getSummaryNode ( Node n ) {
150- result = n .( FlowSummaryNode ) .getSummaryNode ( )
151- }
188+ private module StepsInput implements Impl2:: StepsInputSig {
189+ Impl2:: SummaryNode getSummaryNode ( Node n ) { result = n .( FlowSummaryNode ) .getSummaryNode ( ) }
152190
153191 DataFlowCall getACall ( Public:: SummarizedCallable sc ) {
154192 sc = viableCallable ( result ) .asSummarizedCallable ( )
155193 }
156-
157- DataFlowCallable getSourceNodeEnclosingCallable ( Input:: SourceBase source ) { none ( ) }
158-
159- Node getSourceNode ( Input:: SourceBase source , Impl:: Private:: SummaryComponentStack s ) { none ( ) }
160-
161- Node getSinkNode ( Input:: SinkBase sink , Impl:: Private:: SummaryComponent sc ) { none ( ) }
162194}
163195
164196private predicate relatedArgSpec ( Callable c , string spec ) {
@@ -372,9 +404,10 @@ module SourceSinkInterpretationInput implements
372404
373405module Private {
374406 import Impl:: Private
375- import Impl:: Private:: Types< TypesInput >
407+ import Impl2
408+ import Types< TypesInput >
376409
377- module Steps = Impl :: Private :: Steps< StepsInput > ;
410+ module Steps = Impl2 :: Steps< StepsInput > ;
378411
379412 module External {
380413 import Impl:: Private:: External
0 commit comments