diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionGroup.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionGroup.java index d767bce0cd9..1dcfc99cf83 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionGroup.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionGroup.java @@ -26,6 +26,11 @@ public interface FunctionGroup extends Named { public Set getFunctionDescriptors() { return Collections.emptySet(); } + + @Override + public String toString() { + return "EMPTY"; + } }; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java index 402b5c83597..008c53e20bb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java @@ -42,7 +42,7 @@ public class MutableClassDescriptor extends MutableDeclarationDescriptor impleme super(containingDeclaration); this.scopeForMemberLookup = new WritableScopeImpl(JetScope.EMPTY, this, trace.getErrorHandler()).setDebugName("MemberLookup"); this.scopeForSupertypeResolution = new WritableScopeImpl(outerScope, this, trace.getErrorHandler()).setDebugName("SupertypeResolution"); - this.scopeForMemberResolution = new WritableScopeImpl(new ChainedScope(this, scopeForMemberLookup, scopeForSupertypeResolution), this, trace.getErrorHandler()).setDebugName("MemberResolution"); + this.scopeForMemberResolution = new WritableScopeImpl(scopeForSupertypeResolution, this, trace.getErrorHandler()).setDebugName("MemberResolution"); this.kind = kind; } @@ -87,6 +87,7 @@ public class MutableClassDescriptor extends MutableDeclarationDescriptor impleme public void addPropertyDescriptor(@NotNull PropertyDescriptor propertyDescriptor) { properties.add(propertyDescriptor); scopeForMemberLookup.addVariableDescriptor(propertyDescriptor); + scopeForMemberResolution.addVariableDescriptor(propertyDescriptor); } @NotNull @@ -98,6 +99,7 @@ public class MutableClassDescriptor extends MutableDeclarationDescriptor impleme public void addFunctionDescriptor(@NotNull FunctionDescriptor functionDescriptor) { functions.add(functionDescriptor); scopeForMemberLookup.addFunctionDescriptor(functionDescriptor); + scopeForMemberResolution.addFunctionDescriptor(functionDescriptor); } @NotNull @@ -118,6 +120,7 @@ public class MutableClassDescriptor extends MutableDeclarationDescriptor impleme @Override public void addClassifierDescriptor(@NotNull MutableClassDescriptor classDescriptor) { scopeForMemberLookup.addClassifierDescriptor(classDescriptor); + scopeForMemberResolution.addClassifierDescriptor(classDescriptor); } public void addSupertype(@NotNull JetType supertype) { diff --git a/idea/testData/codegen/regressions/kt297.jet b/idea/testData/codegen/regressions/kt297.jet new file mode 100644 index 00000000000..0a6ad8f82a5 --- /dev/null +++ b/idea/testData/codegen/regressions/kt297.jet @@ -0,0 +1,4 @@ +// KT-297 Overload resolution ambiguity with required in trait +trait ALE : java.util.ArrayList { + fun getOrValue(index: Int, value : T) : T = if(index >= 0 && index < size()) get(index) else value +} \ No newline at end of file