From 5be2a4945bf0e844a108a1ec1d3af1df2a73104c Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 15 Apr 2014 19:46:01 +0400 Subject: [PATCH] Render FQ name of default package as "root package" in OverloadResolver --- .../org/jetbrains/jet/lang/resolve/OverloadResolver.java | 4 +++- .../diagnosticMessage/conflictingOverloadsDefaultPackage.kt | 6 ++++++ .../conflictingOverloadsDefaultPackage1.txt | 2 ++ .../conflictingOverloadsDefaultPackage2.txt | 2 ++ .../plugin/highlighter/DiagnosticMessageTestGenerated.java | 5 +++++ 5 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 idea/testData/diagnosticMessage/conflictingOverloadsDefaultPackage.kt create mode 100644 idea/testData/diagnosticMessage/conflictingOverloadsDefaultPackage1.txt create mode 100644 idea/testData/diagnosticMessage/conflictingOverloadsDefaultPackage2.txt 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 81193e62d0b..e68987af65f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverloadResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverloadResolver.java @@ -106,7 +106,9 @@ public class OverloadResolver { } for (Map.Entry> e : functionsByName.entrySet()) { - checkOverloadsWithSameName(e.getValue(), e.getKey().parent().asString()); + // TODO: don't render FQ name here, extract this logic to somewhere + FqNameUnsafe fqName = e.getKey().parent(); + checkOverloadsWithSameName(e.getValue(), fqName.isRoot() ? "root package" : fqName.asString()); } } diff --git a/idea/testData/diagnosticMessage/conflictingOverloadsDefaultPackage.kt b/idea/testData/diagnosticMessage/conflictingOverloadsDefaultPackage.kt new file mode 100644 index 00000000000..f6a50544632 --- /dev/null +++ b/idea/testData/diagnosticMessage/conflictingOverloadsDefaultPackage.kt @@ -0,0 +1,6 @@ +// !DIAGNOSTICS_NUMBER: 2 +// !DIAGNOSTICS: CONFLICTING_OVERLOADS +// !MESSAGE_TYPE: TEXT + +fun foo(x: Int) = x +fun foo(y: Int) = y diff --git a/idea/testData/diagnosticMessage/conflictingOverloadsDefaultPackage1.txt b/idea/testData/diagnosticMessage/conflictingOverloadsDefaultPackage1.txt new file mode 100644 index 00000000000..d7b325abb07 --- /dev/null +++ b/idea/testData/diagnosticMessage/conflictingOverloadsDefaultPackage1.txt @@ -0,0 +1,2 @@ + +'internal fun foo(x: kotlin.Int): kotlin.Int' is already defined in root package diff --git a/idea/testData/diagnosticMessage/conflictingOverloadsDefaultPackage2.txt b/idea/testData/diagnosticMessage/conflictingOverloadsDefaultPackage2.txt new file mode 100644 index 00000000000..e8f83c8a9ff --- /dev/null +++ b/idea/testData/diagnosticMessage/conflictingOverloadsDefaultPackage2.txt @@ -0,0 +1,2 @@ + +'internal fun foo(y: kotlin.Int): kotlin.Int' is already defined in root package diff --git a/idea/tests/org/jetbrains/jet/plugin/highlighter/DiagnosticMessageTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/highlighter/DiagnosticMessageTestGenerated.java index 60f1aadac35..e78b9eb2163 100644 --- a/idea/tests/org/jetbrains/jet/plugin/highlighter/DiagnosticMessageTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/highlighter/DiagnosticMessageTestGenerated.java @@ -41,6 +41,11 @@ public class DiagnosticMessageTestGenerated extends AbstractDiagnosticMessageTes doTest("idea/testData/diagnosticMessage/conflictingOverloadsClass.kt"); } + @TestMetadata("conflictingOverloadsDefaultPackage.kt") + public void testConflictingOverloadsDefaultPackage() throws Exception { + doTest("idea/testData/diagnosticMessage/conflictingOverloadsDefaultPackage.kt"); + } + @TestMetadata("conflictingSubstitutions.kt") public void testConflictingSubstitutions() throws Exception { doTest("idea/testData/diagnosticMessage/conflictingSubstitutions.kt");