@@ -619,11 +619,10 @@ private class DirectAccessHolder extends Element {
619619 /**
620620 * Like `couldAccessMember` but only contains derivations in which either
621621 * (5.2), (5.3) or (5.4) must be invoked. In other words, the `this`
622- * parameter is not ignored. This restriction makes it feasible to fully
623- * enumerate this predicate even on large code bases. We check for 11.4 as
624- * part of (5.3), since this further limits the number of tuples produced by
625- * this predicate.
622+ * parameter is not ignored. We check for 11.4 as part of (5.3), since
623+ * this further limits the number of tuples produced by this predicate.
626624 */
625+ pragma [ inline]
627626 predicate thisCouldAccessMember ( Class memberClass , AccessSpecifier memberAccess , Class derived ) {
628627 // Only (5.4) is recursive, and chains of invocations of (5.4) can always
629628 // be collapsed to one invocation by the transitivity of 11.2/4.
@@ -665,7 +664,9 @@ private class DirectAccessHolder extends Element {
665664 // bypasses `p`. Then that path must be public, or we are in case 2.
666665 exists ( AccessSpecifier public | public .hasName ( "public" ) |
667666 exists ( Class between , Class p |
668- between .accessOfBaseMember ( memberClass , memberAccess ) .hasName ( "protected" ) and
667+ between
668+ .accessOfBaseMember ( pragma [ only_bind_into ] ( memberClass ) , memberAccess )
669+ .hasName ( "protected" ) and
669670 this .isFriendOfOrEqualTo ( p ) and
670671 (
671672 // This is case 1 from above. If `p` derives privately from `between`
0 commit comments