diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java index 86527510608..a5ca18d9714 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/DefaultErrorMessages.java @@ -731,7 +731,7 @@ public class DefaultErrorMessages { return nameExpression.getReferencedName(); }, RENDER_TYPE, RENDER_TYPE); - MAP.put(INCOMPATIBLE_ENUM_COMPARISON, "Comparison of incompatible enums ''{1}'' and ''{2}'' is always unsuccessful", RENDER_TYPE, RENDER_TYPE); + MAP.put(INCOMPATIBLE_ENUM_COMPARISON, "Comparison of incompatible enums ''{0}'' and ''{1}'' is always unsuccessful", RENDER_TYPE, RENDER_TYPE); MAP.put(SENSELESS_COMPARISON, "Condition ''{0}'' is always ''{1}''", ELEMENT_TEXT, TO_STRING); MAP.put(SENSELESS_NULL_IN_WHEN, "Expression under 'when' is never equal to null"); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/PatternMatchingTypingVisitor.kt b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/PatternMatchingTypingVisitor.kt index ed3a5c12fe6..743f4fb4d01 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/PatternMatchingTypingVisitor.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/PatternMatchingTypingVisitor.kt @@ -685,7 +685,7 @@ class PatternMatchingTypingVisitor internal constructor(facade: ExpressionTyping } if (TypeIntersector.isIncompatibleEnums(type, subjectType)) { - context.trace.report(INCOMPATIBLE_ENUM_COMPARISON.on(reportErrorOn, type, subjectType)) + context.trace.report(INCOMPATIBLE_ENUM_COMPARISON.on(reportErrorOn, subjectType, type)) } // check if the pattern is essentially a 'null' expression diff --git a/idea/testData/diagnosticMessage/incompatibleEnums.kt b/idea/testData/diagnosticMessage/incompatibleEnums.kt new file mode 100644 index 00000000000..81c918706bb --- /dev/null +++ b/idea/testData/diagnosticMessage/incompatibleEnums.kt @@ -0,0 +1,22 @@ +// !DIAGNOSTICS_NUMBER: 2 +// !DIAGNOSTICS: INCOMPATIBLE_ENUM_COMPARISON +// !MESSAGE_TYPE: TEXT + +enum class E1 { + A, B +} + +enum class E2 { + A, B +} + +fun foo1(e1: E1, e2: E2) { + e1 == e2 +} + +fun foo2(e1: E1, e2: E2) { + when (e1) { + E2.A -> {} + else -> {} + } +} diff --git a/idea/testData/diagnosticMessage/incompatibleEnums1.txt b/idea/testData/diagnosticMessage/incompatibleEnums1.txt new file mode 100644 index 00000000000..1d6663b559f --- /dev/null +++ b/idea/testData/diagnosticMessage/incompatibleEnums1.txt @@ -0,0 +1,2 @@ + +Comparison of incompatible enums 'E1' and 'E2' is always unsuccessful diff --git a/idea/testData/diagnosticMessage/incompatibleEnums2.txt b/idea/testData/diagnosticMessage/incompatibleEnums2.txt new file mode 100644 index 00000000000..f153c2865a6 --- /dev/null +++ b/idea/testData/diagnosticMessage/incompatibleEnums2.txt @@ -0,0 +1,2 @@ + +Comparison of incompatible enums 'E1' and 'E2' is always unsuccessful diff --git a/idea/tests/org/jetbrains/kotlin/idea/highlighter/DiagnosticMessageTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/highlighter/DiagnosticMessageTestGenerated.java index 51054c7a54d..f98fcdc46e7 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/highlighter/DiagnosticMessageTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/highlighter/DiagnosticMessageTestGenerated.java @@ -114,6 +114,11 @@ public class DiagnosticMessageTestGenerated extends AbstractDiagnosticMessageTes runTest("idea/testData/diagnosticMessage/illegalSuspendCall.kt"); } + @TestMetadata("incompatibleEnums.kt") + public void testIncompatibleEnums() throws Exception { + runTest("idea/testData/diagnosticMessage/incompatibleEnums.kt"); + } + @TestMetadata("invisibleMember.kt") public void testInvisibleMember() throws Exception { runTest("idea/testData/diagnosticMessage/invisibleMember.kt");