diff options
Diffstat (limited to 'org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java')
-rw-r--r-- | org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java index e02ff4f46..f18fac16a 100644 --- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java +++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java @@ -636,6 +636,14 @@ private Binding internalGetBinding(char[][] compoundName, int mask, InvocationSi } // binding is a ReferenceBinding if (!binding.isValidBinding()) { +//{ObjectTeams: let decapsulation see into nested levels of invisible types: + if (binding.problemId() == ProblemReasons.NotVisible + && invocationSite instanceof Expression + && ((Expression)invocationSite).getBaseclassDecapsulation().isAllowed()) + { + binding = ((ProblemReferenceBinding)binding).closestMatch; + } else { +// orig: if (problemFieldBinding != null) { return problemFieldBinding; } @@ -643,6 +651,9 @@ private Binding internalGetBinding(char[][] compoundName, int mask, InvocationSi CharOperation.subarray(compoundName, 0, currentIndex), (ReferenceBinding)((ReferenceBinding)binding).closestMatch(), binding.problemId()); +// ;giro + } +// SH} } if (invocationSite instanceof ASTNode) { referenceBinding = (ReferenceBinding) binding; |