@@ -1130,8 +1130,8 @@ module Impl<FullStateConfigSig Config> {
11301130 DataFlowCall call , ArgNodeEx arg , ParamNodeEx p , boolean allowsFieldFlow
11311131 ) ;
11321132
1133- bindingset [ node, state, ap]
1134- predicate filter ( NodeEx node , FlowState state , Ap ap ) ;
1133+ bindingset [ node, state, t , ap]
1134+ predicate filter ( NodeEx node , FlowState state , Typ t , Ap ap ) ;
11351135
11361136 bindingset [ typ, contentType]
11371137 predicate typecheckStore ( Typ typ , DataFlowType contentType ) ;
@@ -1192,7 +1192,7 @@ module Impl<FullStateConfigSig Config> {
11921192 ) {
11931193 fwdFlow0 ( node , state , cc , summaryCtx , argAp , t , ap , apa ) and
11941194 PrevStage:: revFlow ( node , state , apa ) and
1195- filter ( node , state , ap )
1195+ filter ( node , state , t , ap )
11961196 }
11971197
11981198 pragma [ inline]
@@ -1955,9 +1955,10 @@ module Impl<FullStateConfigSig Config> {
19551955 )
19561956 }
19571957
1958- bindingset [ node, state, ap]
1959- predicate filter ( NodeEx node , FlowState state , Ap ap ) {
1958+ bindingset [ node, state, t , ap]
1959+ predicate filter ( NodeEx node , FlowState state , Typ t , Ap ap ) {
19601960 PrevStage:: revFlowState ( state ) and
1961+ exists ( t ) and
19611962 exists ( ap ) and
19621963 not stateBarrier ( node , state ) and
19631964 (
@@ -2214,10 +2215,10 @@ module Impl<FullStateConfigSig Config> {
22142215 pragma [ nomagic]
22152216 private predicate castingNodeEx ( NodeEx node ) { node .asNode ( ) instanceof CastingNode }
22162217
2217- bindingset [ node, state, ap]
2218- predicate filter ( NodeEx node , FlowState state , Ap ap ) {
2218+ bindingset [ node, state, t , ap]
2219+ predicate filter ( NodeEx node , FlowState state , Typ t , Ap ap ) {
22192220 exists ( state ) and
2220- ( if castingNodeEx ( node ) then compatibleTypes ( node .getDataFlowType ( ) , ap . getType ( ) ) else any ( ) ) and
2221+ ( if castingNodeEx ( node ) then compatibleTypes ( node .getDataFlowType ( ) , t ) else any ( ) ) and
22212222 (
22222223 notExpectsContent ( node )
22232224 or
@@ -2337,11 +2338,11 @@ module Impl<FullStateConfigSig Config> {
23372338 pragma [ nomagic]
23382339 private predicate castingNodeEx ( NodeEx node ) { node .asNode ( ) instanceof CastingNode }
23392340
2340- bindingset [ node, state, ap]
2341- predicate filter ( NodeEx node , FlowState state , Ap ap ) {
2341+ bindingset [ node, state, t , ap]
2342+ predicate filter ( NodeEx node , FlowState state , Typ t , Ap ap ) {
23422343 exists ( state ) and
23432344 not clear ( node , ap ) and
2344- ( if castingNodeEx ( node ) then compatibleTypes ( node .getDataFlowType ( ) , ap . getType ( ) ) else any ( ) ) and
2345+ ( if castingNodeEx ( node ) then compatibleTypes ( node .getDataFlowType ( ) , t ) else any ( ) ) and
23452346 (
23462347 notExpectsContent ( node )
23472348 or
@@ -2633,8 +2634,8 @@ module Impl<FullStateConfigSig Config> {
26332634 )
26342635 }
26352636
2636- bindingset [ node, state, ap]
2637- predicate filter ( NodeEx node , FlowState state , Ap ap ) { any ( ) }
2637+ bindingset [ node, state, t , ap]
2638+ predicate filter ( NodeEx node , FlowState state , Typ t , Ap ap ) { any ( ) }
26382639
26392640 // Type checking is not necessary here as it has already been done in stage 3.
26402641 bindingset [ typ, contentType]
0 commit comments