@@ -242,6 +242,14 @@ private DataFlowCallable viableCallableExt(DataFlowCall call) {
242
242
243
243
cached
244
244
private module Cached {
245
+ cached
246
+ predicate nodeEnclosingCallable ( Node n , DataFlowCallable c ) { c = n .getEnclosingCallable ( ) }
247
+
248
+ cached
249
+ predicate callEnclosingCallable ( DataFlowCall call , DataFlowCallable c ) {
250
+ c = call .getEnclosingCallable ( )
251
+ }
252
+
245
253
/**
246
254
* Gets a viable target for the lambda call `call`.
247
255
*
@@ -553,7 +561,7 @@ private module Cached {
553
561
private predicate mayBenefitFromCallContextExt ( DataFlowCall call , DataFlowCallable callable ) {
554
562
mayBenefitFromCallContext ( call , callable )
555
563
or
556
- callable = call . getEnclosingCallable ( ) and
564
+ callEnclosingCallable ( call , callable ) and
557
565
exists ( viableCallableLambda ( call , TDataFlowCallSome ( _) ) )
558
566
}
559
567
@@ -611,7 +619,7 @@ private module Cached {
611
619
mayBenefitFromCallContextExt ( call , _) and
612
620
c = viableCallableExt ( call ) and
613
621
ctxtgts = count ( DataFlowCall ctx | c = viableImplInCallContextExt ( call , ctx ) ) and
614
- tgts = strictcount ( DataFlowCall ctx | viableCallableExt ( ctx ) = call . getEnclosingCallable ( ) ) and
622
+ tgts = strictcount ( DataFlowCall ctx | callEnclosingCallable ( call , viableCallableExt ( ctx ) ) ) and
615
623
ctxtgts < tgts
616
624
)
617
625
}
@@ -866,7 +874,7 @@ class CallContextReturn extends CallContextNoCall, TReturn {
866
874
}
867
875
868
876
override predicate relevantFor ( DataFlowCallable callable ) {
869
- exists ( DataFlowCall call | this = TReturn ( _, call ) and call . getEnclosingCallable ( ) = callable )
877
+ exists ( DataFlowCall call | this = TReturn ( _, call ) and callEnclosingCallable ( call , callable ) )
870
878
}
871
879
}
872
880
@@ -1017,7 +1025,7 @@ pragma[inline]
1017
1025
DataFlowCallable getNodeEnclosingCallable ( Node n ) {
1018
1026
exists ( Node n0 |
1019
1027
pragma [ only_bind_into ] ( n0 ) = n and
1020
- pragma [ only_bind_into ] ( result ) = n0 . getEnclosingCallable ( )
1028
+ nodeEnclosingCallable ( n0 , pragma [ only_bind_into ] ( result ) )
1021
1029
)
1022
1030
}
1023
1031
@@ -1042,7 +1050,7 @@ predicate resolveReturn(CallContext cc, DataFlowCallable callable, DataFlowCall
1042
1050
cc instanceof CallContextAny and callable = viableCallableExt ( call )
1043
1051
or
1044
1052
exists ( DataFlowCallable c0 , DataFlowCall call0 |
1045
- call0 . getEnclosingCallable ( ) = callable and
1053
+ callEnclosingCallable ( call0 , callable ) and
1046
1054
cc = TReturn ( c0 , call0 ) and
1047
1055
c0 = prunedViableImplInCallContextReverse ( call0 , call )
1048
1056
)
0 commit comments