Loading functions from superclasses before current to avoid heisenbug.

Added test with two supertypes.

 #KT-2776 in progress
This commit is contained in:
Evgeny Gerashchenko
2012-11-02 21:10:00 +04:00
parent 494345ce10
commit e2d213f1fd
4 changed files with 45 additions and 2 deletions
@@ -188,6 +188,11 @@ public final class JavaFunctionResolver {
) {
final Set<FunctionDescriptor> functions = new HashSet<FunctionDescriptor>();
Set<SimpleFunctionDescriptor> functionsFromSupertypes = null;
if (owner instanceof ClassDescriptor) {
functionsFromSupertypes = getFunctionsFromSupertypes(methodName, owner);
}
Set<SimpleFunctionDescriptor> functionsFromCurrent = Sets.newHashSet();
for (PsiMethodWrapper method : namedMembers.getMethods()) {
SimpleFunctionDescriptor function = resolveMethodToFunctionDescriptor(psiClass, method, scopeData, owner);
@@ -199,8 +204,6 @@ public final class JavaFunctionResolver {
if (owner instanceof ClassDescriptor) {
ClassDescriptor classDescriptor = (ClassDescriptor) owner;
Set<SimpleFunctionDescriptor> functionsFromSupertypes = getFunctionsFromSupertypes(methodName, owner);
OverrideResolver.generateOverridesInFunctionGroup(methodName, functionsFromSupertypes, functionsFromCurrent, classDescriptor,
new OverrideResolver.DescriptorSink() {
@Override