@@ -120,6 +120,21 @@ private module Impl {
120
120
)
121
121
}
122
122
123
+ private Element getImmediateChildOfUnresolvedElement (
124
+ UnresolvedElement e , int index , string partialPredicateCall
125
+ ) {
126
+ exists ( int b , int bElement , int n |
127
+ b = 0 and
128
+ bElement = b + 1 + max ( int i | i = - 1 or exists ( getImmediateChildOfElement ( e , i , _) ) | i ) and
129
+ n = bElement and
130
+ (
131
+ none ( )
132
+ or
133
+ result = getImmediateChildOfElement ( e , index - b , partialPredicateCall )
134
+ )
135
+ )
136
+ }
137
+
123
138
private Element getImmediateChildOfAnyFunctionType (
124
139
AnyFunctionType e , int index , string partialPredicateCall
125
140
) {
@@ -563,14 +578,18 @@ private module Impl {
563
578
private Element getImmediateChildOfUnresolvedType (
564
579
UnresolvedType e , int index , string partialPredicateCall
565
580
) {
566
- exists ( int b , int bType , int n |
581
+ exists ( int b , int bType , int bUnresolvedElement , int n |
567
582
b = 0 and
568
583
bType = b + 1 + max ( int i | i = - 1 or exists ( getImmediateChildOfType ( e , i , _) ) | i ) and
569
- n = bType and
584
+ bUnresolvedElement =
585
+ bType + 1 + max ( int i | i = - 1 or exists ( getImmediateChildOfUnresolvedElement ( e , i , _) ) | i ) and
586
+ n = bUnresolvedElement and
570
587
(
571
588
none ( )
572
589
or
573
590
result = getImmediateChildOfType ( e , index - b , partialPredicateCall )
591
+ or
592
+ result = getImmediateChildOfUnresolvedElement ( e , index - bType , partialPredicateCall )
574
593
)
575
594
)
576
595
}
@@ -2630,31 +2649,39 @@ private module Impl {
2630
2649
private Element getImmediateChildOfUnresolvedDeclRefExpr (
2631
2650
UnresolvedDeclRefExpr e , int index , string partialPredicateCall
2632
2651
) {
2633
- exists ( int b , int bExpr , int n |
2652
+ exists ( int b , int bExpr , int bUnresolvedElement , int n |
2634
2653
b = 0 and
2635
2654
bExpr = b + 1 + max ( int i | i = - 1 or exists ( getImmediateChildOfExpr ( e , i , _) ) | i ) and
2636
- n = bExpr and
2655
+ bUnresolvedElement =
2656
+ bExpr + 1 + max ( int i | i = - 1 or exists ( getImmediateChildOfUnresolvedElement ( e , i , _) ) | i ) and
2657
+ n = bUnresolvedElement and
2637
2658
(
2638
2659
none ( )
2639
2660
or
2640
2661
result = getImmediateChildOfExpr ( e , index - b , partialPredicateCall )
2662
+ or
2663
+ result = getImmediateChildOfUnresolvedElement ( e , index - bExpr , partialPredicateCall )
2641
2664
)
2642
2665
)
2643
2666
}
2644
2667
2645
2668
private Element getImmediateChildOfUnresolvedDotExpr (
2646
2669
UnresolvedDotExpr e , int index , string partialPredicateCall
2647
2670
) {
2648
- exists ( int b , int bExpr , int n , int nBase |
2671
+ exists ( int b , int bExpr , int bUnresolvedElement , int n , int nBase |
2649
2672
b = 0 and
2650
2673
bExpr = b + 1 + max ( int i | i = - 1 or exists ( getImmediateChildOfExpr ( e , i , _) ) | i ) and
2651
- n = bExpr and
2674
+ bUnresolvedElement =
2675
+ bExpr + 1 + max ( int i | i = - 1 or exists ( getImmediateChildOfUnresolvedElement ( e , i , _) ) | i ) and
2676
+ n = bUnresolvedElement and
2652
2677
nBase = n + 1 and
2653
2678
(
2654
2679
none ( )
2655
2680
or
2656
2681
result = getImmediateChildOfExpr ( e , index - b , partialPredicateCall )
2657
2682
or
2683
+ result = getImmediateChildOfUnresolvedElement ( e , index - bExpr , partialPredicateCall )
2684
+ or
2658
2685
index = n and result = e .getImmediateBase ( ) and partialPredicateCall = "Base()"
2659
2686
)
2660
2687
)
@@ -2663,31 +2690,39 @@ private module Impl {
2663
2690
private Element getImmediateChildOfUnresolvedMemberExpr (
2664
2691
UnresolvedMemberExpr e , int index , string partialPredicateCall
2665
2692
) {
2666
- exists ( int b , int bExpr , int n |
2693
+ exists ( int b , int bExpr , int bUnresolvedElement , int n |
2667
2694
b = 0 and
2668
2695
bExpr = b + 1 + max ( int i | i = - 1 or exists ( getImmediateChildOfExpr ( e , i , _) ) | i ) and
2669
- n = bExpr and
2696
+ bUnresolvedElement =
2697
+ bExpr + 1 + max ( int i | i = - 1 or exists ( getImmediateChildOfUnresolvedElement ( e , i , _) ) | i ) and
2698
+ n = bUnresolvedElement and
2670
2699
(
2671
2700
none ( )
2672
2701
or
2673
2702
result = getImmediateChildOfExpr ( e , index - b , partialPredicateCall )
2703
+ or
2704
+ result = getImmediateChildOfUnresolvedElement ( e , index - bExpr , partialPredicateCall )
2674
2705
)
2675
2706
)
2676
2707
}
2677
2708
2678
2709
private Element getImmediateChildOfUnresolvedPatternExpr (
2679
2710
UnresolvedPatternExpr e , int index , string partialPredicateCall
2680
2711
) {
2681
- exists ( int b , int bExpr , int n , int nSubPattern |
2712
+ exists ( int b , int bExpr , int bUnresolvedElement , int n , int nSubPattern |
2682
2713
b = 0 and
2683
2714
bExpr = b + 1 + max ( int i | i = - 1 or exists ( getImmediateChildOfExpr ( e , i , _) ) | i ) and
2684
- n = bExpr and
2715
+ bUnresolvedElement =
2716
+ bExpr + 1 + max ( int i | i = - 1 or exists ( getImmediateChildOfUnresolvedElement ( e , i , _) ) | i ) and
2717
+ n = bUnresolvedElement and
2685
2718
nSubPattern = n + 1 and
2686
2719
(
2687
2720
none ( )
2688
2721
or
2689
2722
result = getImmediateChildOfExpr ( e , index - b , partialPredicateCall )
2690
2723
or
2724
+ result = getImmediateChildOfUnresolvedElement ( e , index - bExpr , partialPredicateCall )
2725
+ or
2691
2726
index = n and result = e .getImmediateSubPattern ( ) and partialPredicateCall = "SubPattern()"
2692
2727
)
2693
2728
)
@@ -2696,14 +2731,18 @@ private module Impl {
2696
2731
private Element getImmediateChildOfUnresolvedSpecializeExpr (
2697
2732
UnresolvedSpecializeExpr e , int index , string partialPredicateCall
2698
2733
) {
2699
- exists ( int b , int bExpr , int n |
2734
+ exists ( int b , int bExpr , int bUnresolvedElement , int n |
2700
2735
b = 0 and
2701
2736
bExpr = b + 1 + max ( int i | i = - 1 or exists ( getImmediateChildOfExpr ( e , i , _) ) | i ) and
2702
- n = bExpr and
2737
+ bUnresolvedElement =
2738
+ bExpr + 1 + max ( int i | i = - 1 or exists ( getImmediateChildOfUnresolvedElement ( e , i , _) ) | i ) and
2739
+ n = bUnresolvedElement and
2703
2740
(
2704
2741
none ( )
2705
2742
or
2706
2743
result = getImmediateChildOfExpr ( e , index - b , partialPredicateCall )
2744
+ or
2745
+ result = getImmediateChildOfUnresolvedElement ( e , index - bExpr , partialPredicateCall )
2707
2746
)
2708
2747
)
2709
2748
}
@@ -4104,32 +4143,45 @@ private module Impl {
4104
4143
private Element getImmediateChildOfUnresolvedMemberChainResultExpr (
4105
4144
UnresolvedMemberChainResultExpr e , int index , string partialPredicateCall
4106
4145
) {
4107
- exists ( int b , int bIdentityExpr , int n |
4146
+ exists ( int b , int bIdentityExpr , int bUnresolvedElement , int n |
4108
4147
b = 0 and
4109
4148
bIdentityExpr =
4110
4149
b + 1 + max ( int i | i = - 1 or exists ( getImmediateChildOfIdentityExpr ( e , i , _) ) | i ) and
4111
- n = bIdentityExpr and
4150
+ bUnresolvedElement =
4151
+ bIdentityExpr + 1 +
4152
+ max ( int i | i = - 1 or exists ( getImmediateChildOfUnresolvedElement ( e , i , _) ) | i ) and
4153
+ n = bUnresolvedElement and
4112
4154
(
4113
4155
none ( )
4114
4156
or
4115
4157
result = getImmediateChildOfIdentityExpr ( e , index - b , partialPredicateCall )
4158
+ or
4159
+ result =
4160
+ getImmediateChildOfUnresolvedElement ( e , index - bIdentityExpr , partialPredicateCall )
4116
4161
)
4117
4162
)
4118
4163
}
4119
4164
4120
4165
private Element getImmediateChildOfUnresolvedTypeConversionExpr (
4121
4166
UnresolvedTypeConversionExpr e , int index , string partialPredicateCall
4122
4167
) {
4123
- exists ( int b , int bImplicitConversionExpr , int n |
4168
+ exists ( int b , int bImplicitConversionExpr , int bUnresolvedElement , int n |
4124
4169
b = 0 and
4125
4170
bImplicitConversionExpr =
4126
4171
b + 1 +
4127
4172
max ( int i | i = - 1 or exists ( getImmediateChildOfImplicitConversionExpr ( e , i , _) ) | i ) and
4128
- n = bImplicitConversionExpr and
4173
+ bUnresolvedElement =
4174
+ bImplicitConversionExpr + 1 +
4175
+ max ( int i | i = - 1 or exists ( getImmediateChildOfUnresolvedElement ( e , i , _) ) | i ) and
4176
+ n = bUnresolvedElement and
4129
4177
(
4130
4178
none ( )
4131
4179
or
4132
4180
result = getImmediateChildOfImplicitConversionExpr ( e , index - b , partialPredicateCall )
4181
+ or
4182
+ result =
4183
+ getImmediateChildOfUnresolvedElement ( e , index - bImplicitConversionExpr ,
4184
+ partialPredicateCall )
4133
4185
)
4134
4186
)
4135
4187
}
0 commit comments