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) {