Lines 621-633
Link Here
|
621 |
if (qualifiedPattern == null) return methodLevel; // since any declaring class will do |
621 |
if (qualifiedPattern == null) return methodLevel; // since any declaring class will do |
622 |
|
622 |
|
623 |
int declaringLevel; |
623 |
int declaringLevel; |
624 |
if (isVirtualInvoke(method, messageSend) && !(messageSend.actualReceiverType instanceof ArrayBinding)) { |
624 |
if (isVirtualInvoke(method, messageSend) && (messageSend.actualReceiverType instanceof ReferenceBinding)) { |
625 |
declaringLevel = resolveLevelAsSubtype(qualifiedPattern, method.declaringClass); |
625 |
ReferenceBinding methodReceiverType = (ReferenceBinding) messageSend.actualReceiverType; |
|
|
626 |
declaringLevel = resolveLevelAsSubtype(qualifiedPattern, methodReceiverType); |
626 |
if (declaringLevel == IMPOSSIBLE_MATCH) { |
627 |
if (declaringLevel == IMPOSSIBLE_MATCH) { |
627 |
if (method.declaringClass == null || this.allSuperDeclaringTypeNames == null) { |
628 |
if (this.allSuperDeclaringTypeNames == null) { |
628 |
declaringLevel = INACCURATE_MATCH; |
629 |
declaringLevel = INACCURATE_MATCH; |
629 |
} else { |
630 |
} else { |
630 |
char[][] compoundName = method.declaringClass.compoundName; |
631 |
char[][] compoundName = methodReceiverType.compoundName; |
631 |
for (int i = 0, max = this.allSuperDeclaringTypeNames.length; i < max; i++) |
632 |
for (int i = 0, max = this.allSuperDeclaringTypeNames.length; i < max; i++) |
632 |
if (CharOperation.equals(this.allSuperDeclaringTypeNames[i], compoundName)) |
633 |
if (CharOperation.equals(this.allSuperDeclaringTypeNames[i], compoundName)) |
633 |
return methodLevel; // since this is an ACCURATE_MATCH so return the possibly weaker match |
634 |
return methodLevel; // since this is an ACCURATE_MATCH so return the possibly weaker match |