Properly check overloads in enum

This commit is contained in:
Andrey Breslav
2014-06-16 21:49:03 +04:00
parent f1545963f3
commit 98701b7c6e
3 changed files with 12 additions and 8 deletions
@@ -132,14 +132,6 @@ public class OverloadResolver {
) {
MultiMap<Name, CallableMemberDescriptor> functionsByName = MultiMap.create();
if (classDescriptor.getKind() == ClassKind.ENUM_CLASS) {
ClassDescriptorWithResolutionScopes classObjectDescriptor = classDescriptor.getClassObjectDescriptor();
assert classObjectDescriptor != null;
for (CallableMemberDescriptor memberDescriptor : classObjectDescriptor.getDeclaredCallableMembers()) {
functionsByName.putValue(memberDescriptor.getName(), memberDescriptor);
}
}
for (CallableMemberDescriptor function : classDescriptor.getDeclaredCallableMembers()) {
functionsByName.putValue(function.getName(), function);
}
@@ -0,0 +1,7 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
enum class <!CONFLICTING_JVM_DECLARATIONS, CONFLICTING_JVM_DECLARATIONS!>E<!> {
A;
<!CONFLICTING_JVM_DECLARATIONS!>fun values(): Array<E><!> = null!!
<!CONFLICTING_JVM_DECLARATIONS!>fun valueOf(s: String): E<!> = null!!
}
@@ -2855,6 +2855,11 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/specialNames/delegationBy.kt");
}
@TestMetadata("enum.kt")
public void testEnum() throws Exception {
doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/specialNames/enum.kt");
}
@TestMetadata("innerClassField.kt")
public void testInnerClassField() throws Exception {
doTest("compiler/testData/diagnostics/tests/duplicateJvmSignature/specialNames/innerClassField.kt");