diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverloadResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverloadResolver.java index fc3c2c84baa..bc58218ab11 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverloadResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverloadResolver.java @@ -91,6 +91,10 @@ public class OverloadResolver { MultiMap inNamespaces = MultiMap.create(); for (MutableClassDescriptor klass : context.getClasses().values()) { + if (klass.getKind().isSingleton()) { + // Constructors of singletons aren't callable from the code, so they shouldn't participate in overload name checking + continue; + } DeclarationDescriptor containingDeclaration = klass.getContainingDeclaration(); if (containingDeclaration instanceof NamespaceDescriptor) { NamespaceDescriptor namespaceDescriptor = (NamespaceDescriptor) containingDeclaration; diff --git a/compiler/testData/diagnostics/tests/redeclarations/SingletonAndFunctionSameName.kt b/compiler/testData/diagnostics/tests/redeclarations/SingletonAndFunctionSameName.kt new file mode 100644 index 00000000000..916df0c530c --- /dev/null +++ b/compiler/testData/diagnostics/tests/redeclarations/SingletonAndFunctionSameName.kt @@ -0,0 +1,21 @@ +fun Foo() = 42 + +object Foo { + fun Bar() = 239 + + object Bar +} + + + +fun En() = 239 + +enum class En { + ENTRY + + SUBCLASS { } + + fun ENTRY() = 42 + + fun SUBCLASS() = ENTRY() +} diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index dc25ba44ecc..e74c72f60cb 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -5033,6 +5033,11 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage doTest("compiler/testData/diagnostics/tests/redeclarations/RedeclaredTypeParameters.kt"); } + @TestMetadata("SingletonAndFunctionSameName.kt") + public void testSingletonAndFunctionSameName() throws Exception { + doTest("compiler/testData/diagnostics/tests/redeclarations/SingletonAndFunctionSameName.kt"); + } + } @TestMetadata("compiler/testData/diagnostics/tests/regressions")