@@ -30,11 +30,17 @@ module Input implements InputSig<Location, DataFlowImplSpecific::CsharpDataFlow>
3030 )
3131 }
3232
33- class SourceBase = Void ;
33+ class SourceBase extends Void {
34+ Location getLocation ( ) { none ( ) }
35+ }
36+
37+ class SinkBase = SourceBase ;
3438
35- class SinkBase = Void ;
39+ class FlowSummaryCallBase = SourceBase ;
3640
37- class FlowSummaryCallBase = Void ;
41+ DataFlowCallable getSummarizedCallableAsDataFlowCallable ( SummarizedCallableBase c ) {
42+ result .asSummarizedCallable ( ) = c
43+ }
3844
3945 predicate neutralElement ( SummarizedCallableBase c , string kind , string provenance , boolean isExact ) {
4046 interpretNeutral ( c , kind , provenance , isExact )
@@ -122,7 +128,45 @@ module Input implements InputSig<Location, DataFlowImplSpecific::CsharpDataFlow>
122128
123129private import Make< Location , DataFlowImplSpecific:: CsharpDataFlow , Input > as Impl
124130
125- private module TypesInput implements Impl:: Private:: TypesInputSig {
131+ private module Input2 implements Impl:: Private:: InputSig2 {
132+ private import codeql.util.Void
133+
134+ class SourceSinkReportingElement extends Void {
135+ Location getLocation ( ) { none ( ) }
136+
137+ DataFlowCallable getEnclosingCallable ( ) { none ( ) }
138+ }
139+
140+ SourceSinkReportingElement getSourceEntryElement (
141+ Impl:: Public:: SourceElement source , Impl:: Private:: SummaryComponent sc
142+ ) {
143+ none ( )
144+ }
145+
146+ SourceSinkReportingElement getNextElement (
147+ SourceSinkReportingElement prev , Impl:: Private:: SummaryComponent sc
148+ ) {
149+ none ( )
150+ }
151+
152+ bindingset [ e, sc]
153+ Node getSourceExitNode ( SourceSinkReportingElement e , Impl:: Private:: SummaryComponent sc ) {
154+ none ( )
155+ }
156+
157+ SourceSinkReportingElement getSinkExitElement (
158+ Impl:: Public:: SinkElement sink , Impl:: Private:: SummaryComponent sc
159+ ) {
160+ none ( )
161+ }
162+
163+ bindingset [ e, sc]
164+ Node getSinkEntryNode ( SourceSinkReportingElement e , Impl:: Private:: SummaryComponent sc ) { none ( ) }
165+ }
166+
167+ private import Impl:: Private:: Make2< Input2 > as Impl2
168+
169+ private module TypesInput implements Impl2:: TypesInputSig {
126170 DataFlowType getSyntheticGlobalType ( Impl:: Private:: SyntheticGlobal sg ) {
127171 exists ( sg ) and
128172 result .asGvnType ( ) = Gvn:: getGlobalValueNumber ( any ( ObjectType t ) )
@@ -195,27 +239,15 @@ private module TypesInput implements Impl::Private::TypesInputSig {
195239 )
196240 }
197241
198- DataFlowType getSourceType ( Input:: SourceBase source , Impl:: Private:: SummaryComponentStack s ) {
199- none ( )
200- }
201-
202- DataFlowType getSinkType ( Input:: SinkBase sink , Impl:: Private:: SummaryComponent sc ) { none ( ) }
242+ DataFlowType getSourceSinkType ( Input2:: SourceSinkReportingElement e ) { none ( ) }
203243}
204244
205- private module StepsInput implements Impl:: Private:: StepsInputSig {
206- Impl:: Private:: SummaryNode getSummaryNode ( Node n ) {
207- result = n .( FlowSummaryNode ) .getSummaryNode ( )
208- }
245+ private module StepsInput implements Impl2:: StepsInputSig {
246+ Impl2:: SummaryNode getSummaryNode ( Node n ) { result = n .( FlowSummaryNode ) .getSummaryNode ( ) }
209247
210248 DataFlowCall getACall ( Public:: SummarizedCallable sc ) {
211249 sc = viableCallable ( result ) .asSummarizedCallable ( )
212250 }
213-
214- DataFlowCallable getSourceNodeEnclosingCallable ( Input:: SourceBase source ) { none ( ) }
215-
216- Node getSourceNode ( Input:: SourceBase source , Impl:: Private:: SummaryComponentStack s ) { none ( ) }
217-
218- Node getSinkNode ( Input:: SinkBase sink , Impl:: Private:: SummaryComponent sc ) { none ( ) }
219251}
220252
221253module SourceSinkInterpretationInput implements
@@ -339,9 +371,10 @@ module SourceSinkInterpretationInput implements
339371
340372module Private {
341373 import Impl:: Private
342- import Impl:: Private:: Types< TypesInput >
374+ import Impl2
375+ import Types< TypesInput >
343376
344- module Steps = Impl :: Private :: Steps< StepsInput > ;
377+ module Steps = Impl2 :: Steps< StepsInput > ;
345378
346379 module External {
347380 import Impl:: Private:: External
0 commit comments