diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverloadResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverloadResolver.java index ff78e08525a..14e0e2951cc 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverloadResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverloadResolver.java @@ -27,6 +27,7 @@ import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.psi.JetClassOrObject; import org.jetbrains.kotlin.psi.JetDeclaration; import org.jetbrains.kotlin.psi.JetObjectDeclaration; +import org.jetbrains.kotlin.psi.JetSecondaryConstructor; import javax.inject.Inject; import java.util.Collection; @@ -201,7 +202,12 @@ public class OverloadResolver { trace.report(Errors.REDECLARATION.on(jetDeclaration, memberDescriptor.getName().asString())); } else { - trace.report(Errors.CONFLICTING_OVERLOADS.on(jetDeclaration, memberDescriptor, functionContainer)); + String containingClassName = jetDeclaration instanceof JetSecondaryConstructor ? + ((JetSecondaryConstructor) jetDeclaration).getClassOrObject().getName() : null; + + trace.report(Errors.CONFLICTING_OVERLOADS.on( + jetDeclaration, memberDescriptor, + containingClassName != null ? containingClassName : functionContainer)); } } } diff --git a/idea/testData/diagnosticMessage/constructorsRedeclaration.kt b/idea/testData/diagnosticMessage/constructorsRedeclaration.kt new file mode 100644 index 00000000000..6e6fdedc15a --- /dev/null +++ b/idea/testData/diagnosticMessage/constructorsRedeclaration.kt @@ -0,0 +1,7 @@ +// !DIAGNOSTICS_NUMBER: 2 +// !DIAGNOSTICS: CONFLICTING_OVERLOADS +// !MESSAGE_TYPE: TEXT +class Element { + constructor(x : String) {} + constructor(x : String) {} +} diff --git a/idea/testData/diagnosticMessage/constructorsRedeclaration1.txt b/idea/testData/diagnosticMessage/constructorsRedeclaration1.txt new file mode 100644 index 00000000000..d8c271f71c5 --- /dev/null +++ b/idea/testData/diagnosticMessage/constructorsRedeclaration1.txt @@ -0,0 +1,2 @@ + +'public constructor Element(x: kotlin.String)' is already defined in Element \ No newline at end of file diff --git a/idea/testData/diagnosticMessage/constructorsRedeclaration2.txt b/idea/testData/diagnosticMessage/constructorsRedeclaration2.txt new file mode 100644 index 00000000000..f5ece75ad73 --- /dev/null +++ b/idea/testData/diagnosticMessage/constructorsRedeclaration2.txt @@ -0,0 +1,2 @@ + +'public constructor Element(x: kotlin.String)' is already defined in Element \ No newline at end of file diff --git a/idea/testData/diagnosticMessage/constructorsRedeclarationTopLevel.kt b/idea/testData/diagnosticMessage/constructorsRedeclarationTopLevel.kt new file mode 100644 index 00000000000..229be466183 --- /dev/null +++ b/idea/testData/diagnosticMessage/constructorsRedeclarationTopLevel.kt @@ -0,0 +1,7 @@ +// !DIAGNOSTICS_NUMBER: 2 +// !DIAGNOSTICS: CONFLICTING_OVERLOADS +// !MESSAGE_TYPE: TEXT +fun Element(x: String) {} +class Element { + constructor(x : String) {} +} \ No newline at end of file diff --git a/idea/testData/diagnosticMessage/constructorsRedeclarationTopLevel1.txt b/idea/testData/diagnosticMessage/constructorsRedeclarationTopLevel1.txt new file mode 100644 index 00000000000..6a97c023c06 --- /dev/null +++ b/idea/testData/diagnosticMessage/constructorsRedeclarationTopLevel1.txt @@ -0,0 +1,2 @@ + +'internal fun Element(x: kotlin.String): kotlin.Unit' is already defined in root package \ No newline at end of file diff --git a/idea/testData/diagnosticMessage/constructorsRedeclarationTopLevel2.txt b/idea/testData/diagnosticMessage/constructorsRedeclarationTopLevel2.txt new file mode 100644 index 00000000000..fc0b9a78128 --- /dev/null +++ b/idea/testData/diagnosticMessage/constructorsRedeclarationTopLevel2.txt @@ -0,0 +1,2 @@ + +'public constructor Element(x: kotlin.String)' is already defined in Element \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/highlighter/DiagnosticMessageTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/highlighter/DiagnosticMessageTestGenerated.java index 61ebcf9fe27..1e746d6ac18 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/highlighter/DiagnosticMessageTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/highlighter/DiagnosticMessageTestGenerated.java @@ -72,6 +72,18 @@ public class DiagnosticMessageTestGenerated extends AbstractDiagnosticMessageTes doTest(fileName); } + @TestMetadata("constructorsRedeclaration.kt") + public void testConstructorsRedeclaration() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/diagnosticMessage/constructorsRedeclaration.kt"); + doTest(fileName); + } + + @TestMetadata("constructorsRedeclarationTopLevel.kt") + public void testConstructorsRedeclarationTopLevel() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/diagnosticMessage/constructorsRedeclarationTopLevel.kt"); + doTest(fileName); + } + @TestMetadata("differentNamesForSameParameter.kt") public void testDifferentNamesForSameParameter() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/diagnosticMessage/differentNamesForSameParameter.kt");