mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Java: fix error message for extending final local class (IDEA-339271)
GitOrigin-RevId: 1f2089774edbe1a166658eee846362988ef53217
This commit is contained in:
committed by
intellij-monorepo-bot
parent
6b0ded8130
commit
7b6abd34f3
+6
-5
@@ -14,6 +14,7 @@ import com.intellij.codeInsight.intention.QuickFixFactory;
|
||||
import com.intellij.ide.highlighter.JavaFileType;
|
||||
import com.intellij.java.analysis.JavaAnalysisBundle;
|
||||
import com.intellij.lang.jvm.JvmModifier;
|
||||
import com.intellij.lang.jvm.actions.ChangeModifierRequest;
|
||||
import com.intellij.lang.jvm.actions.JvmElementActionFactories;
|
||||
import com.intellij.lang.jvm.actions.MemberRequestsKt;
|
||||
import com.intellij.openapi.module.Module;
|
||||
@@ -591,11 +592,11 @@ public final class HighlightClassUtil {
|
||||
static HighlightInfo.Builder checkCannotInheritFromFinal(@NotNull PsiClass superClass, @NotNull PsiElement elementToHighlight) {
|
||||
HighlightInfo.Builder errorResult = null;
|
||||
if (superClass.hasModifierProperty(PsiModifier.FINAL) || superClass.isEnum()) {
|
||||
String message = JavaErrorBundle
|
||||
.message("inheritance.from.final.class", superClass.getQualifiedName(), superClass.isEnum() ? PsiKeyword.ENUM : PsiKeyword.FINAL);
|
||||
errorResult =
|
||||
HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(elementToHighlight).descriptionAndTooltip(message);
|
||||
QuickFixAction.registerQuickFixActions(errorResult, null, JvmElementActionFactories.createModifierActions(superClass, MemberRequestsKt.modifierRequest(JvmModifier.FINAL, false)));
|
||||
String message = JavaErrorBundle.message("inheritance.from.final.class", HighlightUtil.formatClass(superClass),
|
||||
superClass.isEnum() ? PsiKeyword.ENUM : PsiKeyword.FINAL);
|
||||
errorResult = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(elementToHighlight).descriptionAndTooltip(message);
|
||||
ChangeModifierRequest removeFinal = MemberRequestsKt.modifierRequest(JvmModifier.FINAL, false);
|
||||
QuickFixAction.registerQuickFixActions(errorResult, null, JvmElementActionFactories.createModifierActions(superClass, removeFinal));
|
||||
}
|
||||
return errorResult;
|
||||
}
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
class Main {
|
||||
public static void main(String[] args) {
|
||||
final class First{}
|
||||
class Second extends <error descr="Cannot inherit from final 'First'">First</error>{}
|
||||
}
|
||||
}
|
||||
+1
@@ -396,6 +396,7 @@ public class LightAdvHighlightingTest extends LightDaemonAnalyzerTestCase {
|
||||
public void testIDEA168768() { doTest(false); }
|
||||
public void testStatementWithExpression() { doTest(false); }
|
||||
public void testReturnFromConstructor() { doTest(false); }
|
||||
public void testInheritFromFinalLocalClass() { doTest(false); }
|
||||
|
||||
public void testStaticMethodCalls() {
|
||||
doTestFile(BASE_PATH + "/" + getTestName(false) + ".java").checkSymbolNames().test();
|
||||
|
||||
Reference in New Issue
Block a user