@@ -3127,6 +3127,14 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
3127
3127
override predicate isSource ( ) { sourceNode ( node , state ) }
3128
3128
}
3129
3129
3130
+ bindingset [ p, state, t, ap, stored]
3131
+ pragma [ inline_late]
3132
+ private SummaryCtxSome mkSummaryCtxSome (
3133
+ ParamNodeEx p , FlowState state , Typ t , Ap ap , TypOption stored
3134
+ ) {
3135
+ result = TSummaryCtxSome ( p , state , t , ap , stored )
3136
+ }
3137
+
3130
3138
pragma [ nomagic]
3131
3139
private predicate fwdFlowInStep (
3132
3140
ArgNodeEx arg , ParamNodeEx p , FlowState state , Cc outercc , CcCall innercc ,
@@ -3138,7 +3146,7 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
3138
3146
or
3139
3147
FwdFlowInThrough:: fwdFlowIn ( _, arg , _, p , state , outercc , innercc , outerSummaryCtx , t ,
3140
3148
ap , stored , _) and
3141
- innerSummaryCtx = TSummaryCtxSome ( p , state , t , ap , stored )
3149
+ innerSummaryCtx = mkSummaryCtxSome ( p , state , t , ap , stored )
3142
3150
}
3143
3151
3144
3152
pragma [ nomagic]
@@ -3871,11 +3879,6 @@ module MakeImpl<LocationSig Location, InputSig<Location> Lang> {
3871
3879
bindingset [ node, state, t0, ap]
3872
3880
predicate filter ( NodeEx node , FlowState state , Typ t0 , Ap ap , Typ t ) {
3873
3881
exists ( state ) and
3874
- // We can get away with not using type strengthening here, since we aren't
3875
- // going to use the tracked types in the construction of Stage 4 access
3876
- // paths. For Stage 4 and onwards, the tracked types must be consistent as
3877
- // the cons candidates including types are used to construct subsequent
3878
- // access path approximations.
3879
3882
t0 = t and
3880
3883
(
3881
3884
notExpectsContent ( node )
0 commit comments