@@ -120,6 +120,21 @@ private module Impl {
120120 )
121121 }
122122
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+
123138 private Element getImmediateChildOfAnyFunctionType (
124139 AnyFunctionType e , int index , string partialPredicateCall
125140 ) {
@@ -563,14 +578,18 @@ private module Impl {
563578 private Element getImmediateChildOfUnresolvedType (
564579 UnresolvedType e , int index , string partialPredicateCall
565580 ) {
566- exists ( int b , int bType , int n |
581+ exists ( int b , int bType , int bUnresolvedElement , int n |
567582 b = 0 and
568583 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
570587 (
571588 none ( )
572589 or
573590 result = getImmediateChildOfType ( e , index - b , partialPredicateCall )
591+ or
592+ result = getImmediateChildOfUnresolvedElement ( e , index - bType , partialPredicateCall )
574593 )
575594 )
576595 }
@@ -2630,31 +2649,39 @@ private module Impl {
26302649 private Element getImmediateChildOfUnresolvedDeclRefExpr (
26312650 UnresolvedDeclRefExpr e , int index , string partialPredicateCall
26322651 ) {
2633- exists ( int b , int bExpr , int n |
2652+ exists ( int b , int bExpr , int bUnresolvedElement , int n |
26342653 b = 0 and
26352654 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
26372658 (
26382659 none ( )
26392660 or
26402661 result = getImmediateChildOfExpr ( e , index - b , partialPredicateCall )
2662+ or
2663+ result = getImmediateChildOfUnresolvedElement ( e , index - bExpr , partialPredicateCall )
26412664 )
26422665 )
26432666 }
26442667
26452668 private Element getImmediateChildOfUnresolvedDotExpr (
26462669 UnresolvedDotExpr e , int index , string partialPredicateCall
26472670 ) {
2648- exists ( int b , int bExpr , int n , int nBase |
2671+ exists ( int b , int bExpr , int bUnresolvedElement , int n , int nBase |
26492672 b = 0 and
26502673 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
26522677 nBase = n + 1 and
26532678 (
26542679 none ( )
26552680 or
26562681 result = getImmediateChildOfExpr ( e , index - b , partialPredicateCall )
26572682 or
2683+ result = getImmediateChildOfUnresolvedElement ( e , index - bExpr , partialPredicateCall )
2684+ or
26582685 index = n and result = e .getImmediateBase ( ) and partialPredicateCall = "Base()"
26592686 )
26602687 )
@@ -2663,31 +2690,39 @@ private module Impl {
26632690 private Element getImmediateChildOfUnresolvedMemberExpr (
26642691 UnresolvedMemberExpr e , int index , string partialPredicateCall
26652692 ) {
2666- exists ( int b , int bExpr , int n |
2693+ exists ( int b , int bExpr , int bUnresolvedElement , int n |
26672694 b = 0 and
26682695 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
26702699 (
26712700 none ( )
26722701 or
26732702 result = getImmediateChildOfExpr ( e , index - b , partialPredicateCall )
2703+ or
2704+ result = getImmediateChildOfUnresolvedElement ( e , index - bExpr , partialPredicateCall )
26742705 )
26752706 )
26762707 }
26772708
26782709 private Element getImmediateChildOfUnresolvedPatternExpr (
26792710 UnresolvedPatternExpr e , int index , string partialPredicateCall
26802711 ) {
2681- exists ( int b , int bExpr , int n , int nSubPattern |
2712+ exists ( int b , int bExpr , int bUnresolvedElement , int n , int nSubPattern |
26822713 b = 0 and
26832714 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
26852718 nSubPattern = n + 1 and
26862719 (
26872720 none ( )
26882721 or
26892722 result = getImmediateChildOfExpr ( e , index - b , partialPredicateCall )
26902723 or
2724+ result = getImmediateChildOfUnresolvedElement ( e , index - bExpr , partialPredicateCall )
2725+ or
26912726 index = n and result = e .getImmediateSubPattern ( ) and partialPredicateCall = "SubPattern()"
26922727 )
26932728 )
@@ -2696,14 +2731,18 @@ private module Impl {
26962731 private Element getImmediateChildOfUnresolvedSpecializeExpr (
26972732 UnresolvedSpecializeExpr e , int index , string partialPredicateCall
26982733 ) {
2699- exists ( int b , int bExpr , int n |
2734+ exists ( int b , int bExpr , int bUnresolvedElement , int n |
27002735 b = 0 and
27012736 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
27032740 (
27042741 none ( )
27052742 or
27062743 result = getImmediateChildOfExpr ( e , index - b , partialPredicateCall )
2744+ or
2745+ result = getImmediateChildOfUnresolvedElement ( e , index - bExpr , partialPredicateCall )
27072746 )
27082747 )
27092748 }
@@ -4104,32 +4143,45 @@ private module Impl {
41044143 private Element getImmediateChildOfUnresolvedMemberChainResultExpr (
41054144 UnresolvedMemberChainResultExpr e , int index , string partialPredicateCall
41064145 ) {
4107- exists ( int b , int bIdentityExpr , int n |
4146+ exists ( int b , int bIdentityExpr , int bUnresolvedElement , int n |
41084147 b = 0 and
41094148 bIdentityExpr =
41104149 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
41124154 (
41134155 none ( )
41144156 or
41154157 result = getImmediateChildOfIdentityExpr ( e , index - b , partialPredicateCall )
4158+ or
4159+ result =
4160+ getImmediateChildOfUnresolvedElement ( e , index - bIdentityExpr , partialPredicateCall )
41164161 )
41174162 )
41184163 }
41194164
41204165 private Element getImmediateChildOfUnresolvedTypeConversionExpr (
41214166 UnresolvedTypeConversionExpr e , int index , string partialPredicateCall
41224167 ) {
4123- exists ( int b , int bImplicitConversionExpr , int n |
4168+ exists ( int b , int bImplicitConversionExpr , int bUnresolvedElement , int n |
41244169 b = 0 and
41254170 bImplicitConversionExpr =
41264171 b + 1 +
41274172 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
41294177 (
41304178 none ( )
41314179 or
41324180 result = getImmediateChildOfImplicitConversionExpr ( e , index - b , partialPredicateCall )
4181+ or
4182+ result =
4183+ getImmediateChildOfUnresolvedElement ( e , index - bImplicitConversionExpr ,
4184+ partialPredicateCall )
41334185 )
41344186 )
41354187 }
0 commit comments