@@ -1130,8 +1130,8 @@ module Impl<FullStateConfigSig Config> {
1130
1130
DataFlowCall call , ArgNodeEx arg , ParamNodeEx p , boolean allowsFieldFlow
1131
1131
) ;
1132
1132
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 ) ;
1135
1135
1136
1136
bindingset [ typ, contentType]
1137
1137
predicate typecheckStore ( Typ typ , DataFlowType contentType ) ;
@@ -1192,7 +1192,7 @@ module Impl<FullStateConfigSig Config> {
1192
1192
) {
1193
1193
fwdFlow0 ( node , state , cc , summaryCtx , argAp , t , ap , apa ) and
1194
1194
PrevStage:: revFlow ( node , state , apa ) and
1195
- filter ( node , state , ap )
1195
+ filter ( node , state , t , ap )
1196
1196
}
1197
1197
1198
1198
pragma [ inline]
@@ -1955,9 +1955,10 @@ module Impl<FullStateConfigSig Config> {
1955
1955
)
1956
1956
}
1957
1957
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 ) {
1960
1960
PrevStage:: revFlowState ( state ) and
1961
+ exists ( t ) and
1961
1962
exists ( ap ) and
1962
1963
not stateBarrier ( node , state ) and
1963
1964
(
@@ -2214,10 +2215,10 @@ module Impl<FullStateConfigSig Config> {
2214
2215
pragma [ nomagic]
2215
2216
private predicate castingNodeEx ( NodeEx node ) { node .asNode ( ) instanceof CastingNode }
2216
2217
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 ) {
2219
2220
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
2221
2222
(
2222
2223
notExpectsContent ( node )
2223
2224
or
@@ -2337,11 +2338,11 @@ module Impl<FullStateConfigSig Config> {
2337
2338
pragma [ nomagic]
2338
2339
private predicate castingNodeEx ( NodeEx node ) { node .asNode ( ) instanceof CastingNode }
2339
2340
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 ) {
2342
2343
exists ( state ) and
2343
2344
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
2345
2346
(
2346
2347
notExpectsContent ( node )
2347
2348
or
@@ -2633,8 +2634,8 @@ module Impl<FullStateConfigSig Config> {
2633
2634
)
2634
2635
}
2635
2636
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 ( ) }
2638
2639
2639
2640
// Type checking is not necessary here as it has already been done in stage 3.
2640
2641
bindingset [ typ, contentType]
0 commit comments