diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java
index 1210792638d5..98dbdd7e1f32 100644
--- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java
+++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java
@@ -479,8 +479,9 @@ public class HighlightClassUtil {
@Nullable
static HighlightInfo checkCannotInheritFromFinal(PsiClass superClass, PsiElement elementToHighlight) {
HighlightInfo errorResult = null;
- if (superClass.hasModifierProperty(PsiModifier.FINAL) || superClass.isEnum()) {
- String message = JavaErrorMessages.message("inheritance.from.final.class", superClass.getQualifiedName());
+ boolean isFinal = superClass.hasModifierProperty(PsiModifier.FINAL);
+ if (isFinal || superClass.isEnum()) {
+ String message = JavaErrorMessages.message("inheritance.from.final.class", superClass.getQualifiedName(), isFinal ? PsiKeyword.FINAL : PsiKeyword.ENUM);
errorResult =
HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(elementToHighlight).descriptionAndTooltip(message).create();
QuickFixAction.registerQuickFixAction(errorResult,
diff --git a/java/java-psi-impl/src/messages/JavaErrorMessages.properties b/java/java-psi-impl/src/messages/JavaErrorMessages.properties
index ccc1865f0718..91a55d978746 100644
--- a/java/java-psi-impl/src/messages/JavaErrorMessages.properties
+++ b/java/java-psi-impl/src/messages/JavaErrorMessages.properties
@@ -122,7 +122,7 @@ abstract.cannot.be.instantiated=''{0}'' is abstract; cannot be instantiated
duplicate.class.in.other.file=Duplicate class found in the file ''{0}''
duplicate.class=Duplicate class: ''{0}''
public.class.should.be.named.after.file=Class ''{0}'' is public, should be declared in a file named ''{0}.java''
-inheritance.from.final.class=Cannot inherit from final ''{0}''
+inheritance.from.final.class=Cannot inherit from {1} ''{0}''
package.name.file.path.mismatch=Package name ''{0}'' does not correspond to the file path ''{1}''
missing.package.statement=Missing package statement: ''{0}''
interface.cannot.be.local=Interface not allowed here
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/Enum.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/Enum.java
index b48a04847033..09b0ad9e5513 100644
--- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/Enum.java
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/Enum.java
@@ -41,6 +41,12 @@ enum Operation {
class exte extends Operation {
}
+enum withConstant {
+ A() {};
+}
+
+class extwithConstant extends withConstant {}
+
class use {
void f(Operation op) {
switch(op) {