@@ -2412,8 +2412,8 @@ module Impl<FullStateConfigSig Config> {
2412
2412
Stage4:: consCand ( tc , t , TFrontNil ( t ) ) and
2413
2413
not expensiveLen2unfolding ( tc )
2414
2414
} or
2415
- TConsCons ( TypedContent tc1 , TypedContent tc2 , int len ) {
2416
- Stage4:: consCand ( tc1 , _ , TFrontHead ( tc2 ) ) and
2415
+ TConsCons ( TypedContent tc1 , DataFlowType t , TypedContent tc2 , int len ) {
2416
+ Stage4:: consCand ( tc1 , t , TFrontHead ( tc2 ) ) and
2417
2417
len in [ 2 .. accessPathLimit ( ) ] and
2418
2418
not expensiveLen2unfolding ( tc1 )
2419
2419
} or
@@ -2488,10 +2488,11 @@ module Impl<FullStateConfigSig Config> {
2488
2488
2489
2489
private class AccessPathApproxConsCons extends AccessPathApproxCons , TConsCons {
2490
2490
private TypedContent tc1 ;
2491
+ private DataFlowType t ;
2491
2492
private TypedContent tc2 ;
2492
2493
private int len ;
2493
2494
2494
- AccessPathApproxConsCons ( ) { this = TConsCons ( tc1 , tc2 , len ) }
2495
+ AccessPathApproxConsCons ( ) { this = TConsCons ( tc1 , t , tc2 , len ) }
2495
2496
2496
2497
override string toString ( ) {
2497
2498
if len = 2
@@ -2509,9 +2510,9 @@ module Impl<FullStateConfigSig Config> {
2509
2510
2510
2511
override predicate isCons ( TypedContent head , DataFlowType typ , AccessPathApprox tail ) {
2511
2512
head = tc1 and
2512
- typ = tc2 . getContainerType ( ) and
2513
+ typ = t and
2513
2514
(
2514
- tail = TConsCons ( tc2 , _, len - 1 )
2515
+ tail = TConsCons ( tc2 , _, _ , len - 1 )
2515
2516
or
2516
2517
len = 2 and
2517
2518
tail = TConsNil ( tc2 , _)
@@ -2545,7 +2546,7 @@ module Impl<FullStateConfigSig Config> {
2545
2546
head = tc and
2546
2547
(
2547
2548
exists ( TypedContent tc2 | Stage4:: consCand ( tc , typ , TFrontHead ( tc2 ) ) |
2548
- tail = TConsCons ( tc2 , _, len - 1 )
2549
+ tail = TConsCons ( tc2 , _, _ , len - 1 )
2549
2550
or
2550
2551
len = 2 and
2551
2552
tail = TConsNil ( tc2 , _)
@@ -2940,7 +2941,7 @@ module Impl<FullStateConfigSig Config> {
2940
2941
override AccessPathApproxCons getApprox ( ) {
2941
2942
result = TConsNil ( head_ , t ) and tail_ instanceof AccessPathNil
2942
2943
or
2943
- result = TConsCons ( head_ , tail_ .getHead ( ) , this .length ( ) )
2944
+ result = TConsCons ( head_ , t , tail_ .getHead ( ) , this .length ( ) )
2944
2945
or
2945
2946
result = TCons1 ( head_ , this .length ( ) )
2946
2947
}
@@ -3002,7 +3003,7 @@ module Impl<FullStateConfigSig Config> {
3002
3003
override AccessPathFrontHead getFront ( ) { result = TFrontHead ( head1 ) }
3003
3004
3004
3005
override AccessPathApproxCons getApprox ( ) {
3005
- result = TConsCons ( head1 , head2 , len ) or
3006
+ result = TConsCons ( head1 , t , head2 , len ) or
3006
3007
result = TCons1 ( head1 , len )
3007
3008
}
3008
3009
0 commit comments