diff --git a/java/java-analysis-impl/src/META-INF/JavaAnalysisPlugin.xml b/java/java-analysis-impl/src/META-INF/JavaAnalysisPlugin.xml index f72afbf93f93..e40f0b12f5c5 100644 --- a/java/java-analysis-impl/src/META-INF/JavaAnalysisPlugin.xml +++ b/java/java-analysis-impl/src/META-INF/JavaAnalysisPlugin.xml @@ -315,6 +315,7 @@ + diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/SealedClassUnresolvedReferenceFixProvider.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/SealedClassUnresolvedReferenceFixProvider.java new file mode 100644 index 000000000000..f22aa817fd0e --- /dev/null +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/SealedClassUnresolvedReferenceFixProvider.java @@ -0,0 +1,32 @@ +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.codeInsight.daemon.impl.quickfix; + +import com.intellij.codeInsight.daemon.QuickFixActionRegistrar; +import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature; +import com.intellij.codeInsight.intention.IntentionAction; +import com.intellij.codeInsight.quickfix.UnresolvedReferenceQuickFixProvider; +import com.intellij.psi.PsiJavaCodeReferenceElement; +import com.intellij.psi.PsiKeyword; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; + +import static com.intellij.codeInsight.daemon.impl.analysis.HighlightUtil.registerIncreaseLanguageLevelFixes; + +public class SealedClassUnresolvedReferenceFixProvider extends UnresolvedReferenceQuickFixProvider { + @Override + public void registerFixes(@NotNull PsiJavaCodeReferenceElement ref, @NotNull QuickFixActionRegistrar registrar) { + if (!HighlightingFeature.SEALED_CLASSES.isAvailable(ref) && ref.textMatches(PsiKeyword.SEALED)) { + ArrayList intentions = new ArrayList<>(); + registerIncreaseLanguageLevelFixes(ref, HighlightingFeature.SEALED_CLASSES, intentions); + for (IntentionAction intention : intentions) { + registrar.register(intention); + } + } + } + + @Override + public @NotNull Class getReferenceClass() { + return PsiJavaCodeReferenceElement.class; + } +}