Fix incorrect diagnostic message for CONFLICTING_OVERLOADS
- the member and the container were mixed up - don't output "defined in" part of the message, because we tell later where it's already defined in - fix an instability of the diagnostic order in OverloadResolver by using LinkedHashSet
This commit is contained in:
@@ -17,7 +17,10 @@
|
||||
package org.jetbrains.jet.plugin.highlighter;
|
||||
|
||||
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
|
||||
import org.jetbrains.jet.lang.diagnostics.rendering.*;
|
||||
import org.jetbrains.jet.lang.diagnostics.rendering.DefaultErrorMessages;
|
||||
import org.jetbrains.jet.lang.diagnostics.rendering.DiagnosticFactoryToRendererMap;
|
||||
import org.jetbrains.jet.lang.diagnostics.rendering.DiagnosticRenderer;
|
||||
import org.jetbrains.jet.lang.diagnostics.rendering.DispatchingDiagnosticRenderer;
|
||||
import org.jetbrains.jet.renderer.DescriptorRenderer;
|
||||
|
||||
import static org.jetbrains.jet.lang.diagnostics.Errors.*;
|
||||
@@ -82,7 +85,8 @@ public class IdeErrorMessages {
|
||||
|
||||
MAP.put(MANY_IMPL_MEMBER_NOT_IMPLEMENTED, "<html>{0} must override {1}<br />because it inherits many implementations of it</html>",
|
||||
RENDER_CLASS_OR_OBJECT, DescriptorRenderer.HTML);
|
||||
MAP.put(CONFLICTING_OVERLOADS, "<html>{1}<br />is already defined in ''{0}''</html>", DescriptorRenderer.HTML, TO_STRING);
|
||||
MAP.put(CONFLICTING_OVERLOADS, "<html>''{0}''<br />is already defined in {1}</html>",
|
||||
DescriptorRenderer.HTML_COMPACT_WITH_MODIFIERS, TO_STRING);
|
||||
|
||||
MAP.put(RESULT_TYPE_MISMATCH, "<html>Function return type mismatch." +
|
||||
"<table><tr><td>Expected:</td><td>{1}</td></tr>" +
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
// !DIAGNOSTICS_NUMBER: 2
|
||||
// !DIAGNOSTICS: CONFLICTING_OVERLOADS
|
||||
|
||||
class conflictingOverloads {
|
||||
fun lol(x: Int) = x
|
||||
fun lol(y: Int) = y
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<!-- conflictingOverloadsClass1 -->
|
||||
<html>
|
||||
'<b>
|
||||
internal</b>
|
||||
<b>
|
||||
final</b>
|
||||
<b>
|
||||
fun</b>
|
||||
lol(x: kotlin.Int): kotlin.Int'<br />
|
||||
is already defined in conflictingOverloads</html>
|
||||
@@ -0,0 +1,10 @@
|
||||
<!-- conflictingOverloadsClass2 -->
|
||||
<html>
|
||||
'<b>
|
||||
internal</b>
|
||||
<b>
|
||||
final</b>
|
||||
<b>
|
||||
fun</b>
|
||||
lol(y: kotlin.Int): kotlin.Int'<br />
|
||||
is already defined in conflictingOverloads</html>
|
||||
@@ -36,6 +36,11 @@ public class DiagnosticMessageTestGenerated extends AbstractDiagnosticMessageTes
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("idea/testData/diagnosticMessage"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("conflictingOverloadsClass.kt")
|
||||
public void testConflictingOverloadsClass() throws Exception {
|
||||
doTest("idea/testData/diagnosticMessage/conflictingOverloadsClass.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("conflictingSubstitutions.kt")
|
||||
public void testConflictingSubstitutions() throws Exception {
|
||||
doTest("idea/testData/diagnosticMessage/conflictingSubstitutions.kt");
|
||||
|
||||
Reference in New Issue
Block a user