From d8aa739e974e5217d62ace2ba6b08becc3fed72e Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Wed, 7 Feb 2024 13:17:30 +0100 Subject: [PATCH] [java] IDEA-345355 Refactor HighlightingFeature (in progress) Use JavaLanguageFeature instead of HighlightingFeature GitOrigin-RevId: ad24840c3e810521c82da3873ec42aa3fadb4c0d --- .../daemon/impl/JavaServiceUtil.java | 5 +-- .../daemon/impl/JavaTextBlockIndentPass.java | 3 +- .../analysis/HighlightImplicitClassUtil.java | 11 ++++--- .../impl/analysis/JavaModuleGraphUtil.java | 5 +-- .../analysis/PostHighlightingVisitor.java | 7 ++-- .../impl/quickfix/AddModuleDirectiveFix.kt | 3 +- .../quickfix/MergeModuleStatementsFix.java | 3 +- .../VariableTypeCanBeExplicitInspection.java | 3 +- .../dataFlow/DataFlowInspectionBase.java | 3 +- .../java19modules/Java9ModuleEntryPoint.java | 3 +- .../intellij/psi/util/RedundantCastUtil.java | 5 +-- ...ethodOnlyUsedFromInnerClassInspection.java | 3 +- .../ClassMayBeInterfaceInspection.java | 3 +- ...chExpressionCanBePushedDownInspection.java | 3 +- .../RedundantMethodOverrideInspection.java | 3 +- ...ClassInitializerMayBeStaticInspection.java | 3 +- .../RedundantStringFormatCallInspection.java | 3 +- .../ig/psiutils/CodeBlockSurrounder.java | 3 +- .../com/siyeh/ig/psiutils/SwitchUtils.java | 9 ++--- .../ig/style/EscapedSpaceInspection.java | 3 +- .../essential/JavaOnboardingTourLesson.kt | 6 ++-- .../DeconstructionCanBeUsedInspection.java | 3 +- .../DuplicateBranchesInSwitchInspection.java | 3 +- ...citToImplicitClassMigrationInspection.java | 3 +- .../FillPermitsListInspection.java | 3 +- ...hWithRecordPatternCanBeUsedInspection.java | 3 +- ...licitClassBackwardMigrationInspection.java | 3 +- ...InconsistentTextBlockIndentInspection.java | 3 +- ...MeaninglessRecordAnnotationInspection.java | 3 +- .../PatternVariableCanBeUsedInspection.java | 5 +-- .../RecordCanBeClassInspection.java | 3 +- .../RedundantRecordConstructorInspection.java | 3 +- .../StringTemplateMigrationInspection.java | 3 +- .../TextBlockMigrationInspection.java | 3 +- ...ilingWhitespacesInTextBlockInspection.java | 3 +- .../ClassCanBeRecordInspection.java | 3 +- .../dataFlow/DataFlowInspection.java | 3 +- ...tLabeledSwitchRuleCodeBlockInspection.java | 3 +- ...chLabeledRuleCanBeCodeBlockInspection.java | 3 +- ...Java9UndeclaredServiceUsageInspection.java | 3 +- .../extractMethod/newImpl/CallBuilder.kt | 3 +- .../newImpl/ExtractOptionsPipeline.kt | 3 +- .../parameterObject/ParameterObjectUtils.kt | 3 +- .../parameterObject/ResultObjectExtractor.kt | 3 +- .../inline/InlineMethodProcessor.java | 3 +- .../introduceField/IntroduceFieldHandler.java | 3 +- .../introduceField/LocalToFieldHandler.java | 3 +- .../IntroduceVariableBase.java | 5 +-- .../introduceVariable/VariableExtractor.java | 3 +- ...troduceParameterObjectClassDescriptor.java | 3 +- .../ParameterObjectBuilder.java | 3 +- .../makeStatic/MakeStaticHandler.java | 3 +- .../memberPushDown/PushDownConflicts.java | 3 +- .../JavaStripTrailingSpacesFilterFactory.java | 3 +- .../JavaClassNameInsertHandler.java | 3 +- .../completion/JavaCompletionContributor.java | 7 ++-- .../completion/JavaCompletionUtil.java | 3 +- .../completion/JavaKeywordCompletion.java | 33 ++++++++++--------- .../completion/JavaPatternCompletionUtil.java | 3 +- .../completion/ModifierChooser.java | 7 ++-- .../scope/JavaCompletionProcessor.java | 2 +- ...edClassUnresolvedReferenceFixProvider.java | 2 +- .../quickfix/DefaultQuickFixProvider.java | 5 +-- .../impl/quickfix/RenameToIgnoredFix.java | 3 +- .../quickfix/ReplaceWithTypePatternFix.java | 3 +- ...VariableAccessFromInnerClassJava10Fix.java | 3 +- .../editorActions/CaseJoinLinesHandler.java | 3 +- .../impl/JavaElementActionsFactory.kt | 5 +-- .../intention/impl/SealClassAction.java | 3 +- .../codeInsight/lookup/PsiTypeLookupItem.java | 3 +- .../SwitchStatementPostfixTemplate.java | 7 ++-- .../ConvertRecordToClassFix.java | 7 ++-- .../EnhancedSwitchMigrationInspection.java | 3 +- .../LambdaCanBeMethodReferenceInspection.java | 3 +- .../ide/actions/CreateClassAction.java | 3 +- .../psi/impl/JavaPlatformModuleSystem.kt | 3 +- .../impl/source/codeStyle/ImportHelper.java | 3 +- .../ClassInitializerInspection.java | 3 +- .../UnnecessaryDefaultInspection.java | 3 +- .../ig/dataflow/CreateNullBranchFix.java | 3 +- .../InnerClassMayBeStaticInspection.java | 3 +- .../ig/migration/IfCanBeSwitchInspection.java | 9 ++--- .../FieldMayBeStaticInspection.java | 7 ++-- .../MethodMayBeStaticInspection.java | 3 +- ...RedundantEmbeddedExpressionInspection.java | 3 +- .../RedundantStringOperationInspection.java | 3 +- ...oncatenationWithFormatStringIntention.java | 5 +-- .../CreateMissingSwitchBranchesAction.java | 3 +- .../convertToJava/ExpressionGenerator.java | 3 +- .../quickfix/KotlinAddRequiredModuleFix.kt | 3 +- ...plicitTypeWithVariableIntentionAction.java | 3 +- 91 files changed, 226 insertions(+), 138 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/JavaServiceUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/JavaServiceUtil.java index 76eb9580bb39..b0623a9d9174 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/JavaServiceUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/JavaServiceUtil.java @@ -12,6 +12,7 @@ import com.intellij.openapi.editor.markup.GutterIconRenderer; import com.intellij.openapi.util.NlsSafe; import com.intellij.openapi.util.text.HtmlBuilder; import com.intellij.openapi.util.text.HtmlChunk; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.impl.source.resolve.reference.impl.JavaReflectionReferenceUtil; import com.intellij.psi.util.InheritanceUtil; @@ -83,7 +84,7 @@ final public class JavaServiceUtil { @Nullable PsiClass implementerClass, @Nullable PsiClass resultClass) { if (identifier == null || implementerClass == null || resultClass == null) return Collections.emptyList(); - if (!HighlightingFeature.MODULES.isAvailable(identifier)) return Collections.emptyList(); + if (!JavaLanguageFeature.MODULES.isAvailable(identifier)) return Collections.emptyList(); String implementerClassName = implementerClass.getQualifiedName(); if (implementerClassName == null) return Collections.emptyList(); @@ -127,7 +128,7 @@ final public class JavaServiceUtil { static List> collectServiceLoaderLoadCall(@NotNull PsiIdentifier identifier, @NotNull PsiMethodCallExpression methodCall) { - if (!HighlightingFeature.MODULES.isAvailable(methodCall)) return Collections.emptyList(); + if (!JavaLanguageFeature.MODULES.isAvailable(methodCall)) return Collections.emptyList(); PsiExpression[] arguments = methodCall.getArgumentList().getExpressions(); JavaReflectionReferenceUtil.ReflectiveType serviceType = findServiceTypeInArguments(arguments); diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/JavaTextBlockIndentPass.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/JavaTextBlockIndentPass.java index 26cbfb40a0fb..f00ba174c738 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/JavaTextBlockIndentPass.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/JavaTextBlockIndentPass.java @@ -17,6 +17,7 @@ import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.JavaRecursiveElementWalkingVisitor; import com.intellij.psi.PsiJavaFile; import com.intellij.psi.PsiLiteralExpression; @@ -49,7 +50,7 @@ public class JavaTextBlockIndentPass extends TextEditorHighlightingPass { @Override public void doCollectInformation(@NotNull ProgressIndicator progress) { - if (!myEditor.getSettings().isIndentGuidesShown() || !HighlightingFeature.TEXT_BLOCKS.isAvailable(myFile)) { + if (!myEditor.getSettings().isIndentGuidesShown() || !JavaLanguageFeature.TEXT_BLOCKS.isAvailable(myFile)) { return; } Document document = myEditor.getDocument(); diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightImplicitClassUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightImplicitClassUtil.java index a85b4771bb56..1495b8b7ee30 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightImplicitClassUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightImplicitClassUtil.java @@ -7,6 +7,7 @@ import com.intellij.codeInsight.daemon.impl.HighlightInfoType; import com.intellij.codeInsight.intention.QuickFixFactory; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtilCore; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.util.JavaImplicitClassUtil; @@ -21,7 +22,7 @@ import org.jetbrains.annotations.Nullable; public final class HighlightImplicitClassUtil { static HighlightInfo.@Nullable Builder checkImplicitClassHasMainMethod(@NotNull PsiJavaFile file) { - if (!HighlightingFeature.IMPLICIT_CLASSES.isAvailable(file)) return null; + if (!JavaLanguageFeature.IMPLICIT_CLASSES.isAvailable(file)) return null; PsiImplicitClass implicitClass = JavaImplicitClassUtil.getImplicitClassFor(file); if (implicitClass == null) return null; PsiMethod[] methods = implicitClass.getMethods(); @@ -37,7 +38,7 @@ public final class HighlightImplicitClassUtil { } static HighlightInfo.@Nullable Builder checkImplicitClassFileIsValidIdentifier(@NotNull PsiJavaFile file) { - if (!HighlightingFeature.IMPLICIT_CLASSES.isAvailable(file)) return null; + if (!JavaLanguageFeature.IMPLICIT_CLASSES.isAvailable(file)) return null; PsiImplicitClass implicitClass = JavaImplicitClassUtil.getImplicitClassFor(file); if (implicitClass == null) return null; String name = implicitClass.getQualifiedName(); @@ -51,7 +52,7 @@ public final class HighlightImplicitClassUtil { } static HighlightInfo.@Nullable Builder checkInitializersInImplicitClass(@NotNull PsiClassInitializer initializer) { - if (initializer.getContainingClass() instanceof PsiImplicitClass && HighlightingFeature.IMPLICIT_CLASSES.isAvailable(initializer)) { + if (initializer.getContainingClass() instanceof PsiImplicitClass && JavaLanguageFeature.IMPLICIT_CLASSES.isAvailable(initializer)) { return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR) .range(initializer) .descriptionAndTooltip(JavaErrorBundle.message("error.initializers.are.not.allowed.in.implicit.classes")) @@ -62,7 +63,7 @@ public final class HighlightImplicitClassUtil { static HighlightInfo.@Nullable Builder checkPackageNotAllowedInImplicitClass(@NotNull PsiPackageStatement statement, @NotNull PsiFile file) { - if (HighlightingFeature.IMPLICIT_CLASSES.isAvailable(file) && JavaImplicitClassUtil.isFileWithImplicitClass(file)) { + if (JavaLanguageFeature.IMPLICIT_CLASSES.isAvailable(file) && JavaImplicitClassUtil.isFileWithImplicitClass(file)) { return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR) .range(statement) .descriptionAndTooltip(JavaErrorBundle.message("error.package.statement.not.allowed.for.implicit.class")) @@ -73,7 +74,7 @@ public final class HighlightImplicitClassUtil { @Nullable static HighlightInfo.Builder checkDuplicateClasses(@NotNull PsiJavaFile file) { - if (!HighlightingFeature.IMPLICIT_CLASSES.isAvailable(file)) return null; + if (!JavaLanguageFeature.IMPLICIT_CLASSES.isAvailable(file)) return null; PsiImplicitClass implicitClass = JavaImplicitClassUtil.getImplicitClassFor(file); if (implicitClass == null) return null; diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphUtil.java index 43b8af979106..1d2f8941c1f4 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/JavaModuleGraphUtil.java @@ -14,6 +14,7 @@ import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.util.Trinity; import com.intellij.openapi.vfs.JarFileSystem; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.impl.PsiJavaModuleModificationTracker; import com.intellij.psi.impl.java.stubs.index.JavaModuleNameIndex; @@ -218,7 +219,7 @@ public final class JavaModuleGraphUtil { @Nullable DependencyScope scope, boolean isExported) { if (to.equals(JAVA_BASE)) return false; - if (!HighlightingFeature.MODULES.isAvailable(from)) return false; + if (!JavaLanguageFeature.MODULES.isAvailable(from)) return false; if (alreadyContainsRequires(from, to)) return false; PsiUtil.addModuleStatement(from, PsiKeyword.REQUIRES + " " + (isStaticModule(to, scope) ? PsiKeyword.STATIC + " " : "") + @@ -231,7 +232,7 @@ public final class JavaModuleGraphUtil { @NotNull PsiJavaModule to, @Nullable DependencyScope scope) { if (to.getName().equals(JAVA_BASE)) return false; - if (!HighlightingFeature.MODULES.isAvailable(from)) return false; + if (!JavaLanguageFeature.MODULES.isAvailable(from)) return false; if (alreadyContainsRequires(from, to.getName())) return false; PsiUtil.addModuleStatement(from, PsiKeyword.REQUIRES + " " + (isStaticModule(to.getName(), scope) ? PsiKeyword.STATIC + " " : "") + diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/PostHighlightingVisitor.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/PostHighlightingVisitor.java index 5f09b8700f78..5a652de354ec 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/PostHighlightingVisitor.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/PostHighlightingVisitor.java @@ -33,6 +33,7 @@ import com.intellij.openapi.util.Predicates; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; @@ -402,7 +403,7 @@ class PostHighlightingVisitor extends JavaElementVisitor { if (message != null) { PsiPattern pattern = variable.getPattern(); IntentionAction action = null; - if (HighlightingFeature.UNNAMED_PATTERNS_AND_VARIABLES.isAvailable(parameter)) { + if (JavaLanguageFeature.UNNAMED_PATTERNS_AND_VARIABLES.isAvailable(parameter)) { if (pattern instanceof PsiTypeTestPattern ttPattern && pattern.getParent() instanceof PsiDeconstructionList) { PsiRecordComponent component = JavaPsiPatternUtil.getRecordComponentForPattern(pattern); PsiTypeElement checkType = ttPattern.getCheckType(); @@ -425,7 +426,7 @@ class PostHighlightingVisitor extends JavaElementVisitor { } } else if ((myUnusedSymbolInspection.checkParameterExcludingHierarchy() || - HighlightingFeature.UNNAMED_PATTERNS_AND_VARIABLES.isAvailable(declarationScope)) + JavaLanguageFeature.UNNAMED_PATTERNS_AND_VARIABLES.isAvailable(declarationScope)) && declarationScope instanceof PsiLambdaExpression) { checkUnusedParameter(parameter, null); if (message != null) { @@ -443,7 +444,7 @@ class PostHighlightingVisitor extends JavaElementVisitor { if (!"main".equals(method.getName())) { return true; } - if (!HighlightingFeature.IMPLICIT_CLASSES.isAvailable(method)) { + if (!JavaLanguageFeature.IMPLICIT_CLASSES.isAvailable(method)) { return true; } return false; diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddModuleDirectiveFix.kt b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddModuleDirectiveFix.kt index 5b3a1024cc75..a92313541435 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddModuleDirectiveFix.kt +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddModuleDirectiveFix.kt @@ -10,6 +10,7 @@ import com.intellij.modcommand.ModPsiUpdater import com.intellij.modcommand.Presentation import com.intellij.modcommand.PsiUpdateModCommandAction import com.intellij.openapi.project.Project +import com.intellij.pom.java.JavaLanguageFeature import com.intellij.psi.PsiElementFactory import com.intellij.psi.PsiJavaModule import com.intellij.psi.PsiKeyword @@ -23,7 +24,7 @@ abstract class AddModuleDirectiveFix(module: PsiJavaModule) : PsiUpdateModComman abstract fun getText(): String override fun getPresentation(context: ActionContext, module: PsiJavaModule): Presentation? { - return if (HighlightingFeature.MODULES.isAvailable(module)) Presentation.of(getText()) else null + return if (JavaLanguageFeature.MODULES.isAvailable(module)) Presentation.of(getText()) else null } } diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MergeModuleStatementsFix.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MergeModuleStatementsFix.java index ec01dc3f2907..63e332b97df4 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MergeModuleStatementsFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MergeModuleStatementsFix.java @@ -8,6 +8,7 @@ import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.Presentation; import com.intellij.modcommand.PsiUpdateModCommandAction; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; import com.siyeh.ig.psiutils.CommentTracker; @@ -27,7 +28,7 @@ public abstract class MergeModuleStatementsFix extends P @Override protected @Nullable Presentation getPresentation(@NotNull ActionContext context, @NotNull PsiJavaModule element) { - return HighlightingFeature.MODULES.isAvailable(element) ? Presentation.of(getText()) : null; + return JavaLanguageFeature.MODULES.isAvailable(element) ? Presentation.of(getText()) : null; } @IntentionName diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/VariableTypeCanBeExplicitInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/VariableTypeCanBeExplicitInspection.java index 145605c923c3..2e194680598f 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/VariableTypeCanBeExplicitInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/VariableTypeCanBeExplicitInspection.java @@ -4,6 +4,7 @@ package com.intellij.codeInspection; import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature; import com.intellij.codeInsight.daemon.impl.quickfix.ReplaceVarWithExplicitTypeFix; import com.intellij.java.analysis.JavaAnalysisBundle; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiTypesUtil; import com.intellij.psi.util.PsiUtil; @@ -16,7 +17,7 @@ public final class VariableTypeCanBeExplicitInspection extends AbstractBaseJavaL @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.LVTI.isAvailable(holder.getFile())) { //var won't be parsed as inferred type otherwise + if (!JavaLanguageFeature.LVTI.isAvailable(holder.getFile())) { //var won't be parsed as inferred type otherwise return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java index 97b68de7ae1c..98e6d5b18580 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java @@ -28,6 +28,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.util.WriteExternalException; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.impl.PsiImplUtil; import com.intellij.psi.util.*; @@ -739,7 +740,7 @@ public abstract class DataFlowInspectionBase extends AbstractBaseJavaLocalInspec PsiType type = ((PsiInstanceOfExpression)anchor).getOperand().getType(); if (type == null || !TypeConstraints.instanceOf(type).isResolved()) return true; // 5.20.2 Removed restriction on pattern instanceof for unconditional patterns (JEP 427) - if (HighlightingFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(anchor)) return false; + if (JavaLanguageFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(anchor)) return false; PsiPattern pattern = ((PsiInstanceOfExpression)anchor).getPattern(); if (pattern instanceof PsiTypeTestPattern && ((PsiTypeTestPattern)pattern).getPatternVariable() != null) { PsiTypeElement checkType = ((PsiTypeTestPattern)pattern).getCheckType(); diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/java19modules/Java9ModuleEntryPoint.java b/java/java-analysis-impl/src/com/intellij/codeInspection/java19modules/Java9ModuleEntryPoint.java index ee7602d5b7ad..3ed2a14736fc 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/java19modules/Java9ModuleEntryPoint.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/java19modules/Java9ModuleEntryPoint.java @@ -10,6 +10,7 @@ import com.intellij.java.analysis.JavaAnalysisBundle; import com.intellij.openapi.util.DefaultJDOMExternalizer; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.impl.light.LightJavaModule; import com.intellij.psi.util.CachedValueProvider; @@ -116,7 +117,7 @@ public final class Java9ModuleEntryPoint extends EntryPointWithVisibilityLevel { } private static @Nullable PsiJavaModule getJavaModule(@Nullable PsiElement element) { - return element != null && HighlightingFeature.MODULES.isAvailable(element) ? JavaModuleGraphUtil.findDescriptorByElement(element) : null; + return element != null && JavaLanguageFeature.MODULES.isAvailable(element) ? JavaModuleGraphUtil.findDescriptorByElement(element) : null; } private static boolean isInExportedPackage(@NotNull PsiClass psiClass, @NotNull PsiJavaModule javaModule) { diff --git a/java/java-analysis-impl/src/com/intellij/psi/util/RedundantCastUtil.java b/java/java-analysis-impl/src/com/intellij/psi/util/RedundantCastUtil.java index 2d73055d4ff7..91058b47ca57 100644 --- a/java/java-analysis-impl/src/com/intellij/psi/util/RedundantCastUtil.java +++ b/java/java-analysis-impl/src/com/intellij/psi/util/RedundantCastUtil.java @@ -9,6 +9,7 @@ import com.intellij.codeInsight.daemon.impl.analysis.JavaGenericsUtil; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.util.Comparing; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.impl.RecaptureTypeMapper; import com.intellij.psi.impl.source.resolve.graphInference.PsiPolyExpressionUtil; @@ -813,7 +814,7 @@ public final class RedundantCastUtil { } } if (opType instanceof PsiPrimitiveType) { - if (HighlightingFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(switchBlock)) { + if (JavaLanguageFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(switchBlock)) { for (PsiElement branch : SwitchUtils.getSwitchBranches(switchBlock)) { // 14.11.1 A null case element is switch compatible with T if T is a reference type (JEP 427) if (branch instanceof PsiExpression expression && TypeConversionUtil.isNullType(expression.getType())) return; @@ -823,7 +824,7 @@ public final class RedundantCastUtil { if (branch instanceof PsiPattern) return; } } - else if (HighlightingFeature.PATTERNS_IN_SWITCH.isAvailable(switchBlock)) { + else if (JavaLanguageFeature.PATTERNS_IN_SWITCH.isAvailable(switchBlock)) { boolean needToCheckCompleteness = switchBlock instanceof PsiSwitchExpression; boolean hasDefault = false; for (PsiElement branch : SwitchUtils.getSwitchBranches(switchBlock)) { diff --git a/java/java-analysis-impl/src/com/siyeh/ig/abstraction/MethodOnlyUsedFromInnerClassInspection.java b/java/java-analysis-impl/src/com/siyeh/ig/abstraction/MethodOnlyUsedFromInnerClassInspection.java index ab07ed5c3845..069b4672aae7 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/abstraction/MethodOnlyUsedFromInnerClassInspection.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/abstraction/MethodOnlyUsedFromInnerClassInspection.java @@ -3,6 +3,7 @@ package com.siyeh.ig.abstraction; import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature; import com.intellij.codeInspection.options.OptPane; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiTreeUtil; @@ -77,7 +78,7 @@ public final class MethodOnlyUsedFromInnerClassInspection extends BaseInspection if (innerClass == null) { return; } - if (method.hasModifierProperty(PsiModifier.STATIC) && !HighlightingFeature.INNER_STATICS.isAvailable(method)) { + if (method.hasModifierProperty(PsiModifier.STATIC) && !JavaLanguageFeature.INNER_STATICS.isAvailable(method)) { final PsiElement parent = innerClass.getParent(); if (parent instanceof PsiClass && !innerClass.hasModifierProperty(PsiModifier.STATIC) || PsiUtil.isLocalClass(innerClass)) { return; diff --git a/java/java-analysis-impl/src/com/siyeh/ig/classlayout/ClassMayBeInterfaceInspection.java b/java/java-analysis-impl/src/com/siyeh/ig/classlayout/ClassMayBeInterfaceInspection.java index 37635bb2e4a3..369914837a9c 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/classlayout/ClassMayBeInterfaceInspection.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/classlayout/ClassMayBeInterfaceInspection.java @@ -23,6 +23,7 @@ import com.intellij.modcommand.ModCommand; import com.intellij.modcommand.ModCommandQuickFix; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.WriteExternalException; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.search.SearchScope; import com.intellij.psi.search.searches.ClassInheritorsSearch; @@ -204,7 +205,7 @@ public final class ClassMayBeInterfaceInspection extends BaseInspection { if (!aClass.hasModifierProperty(PsiModifier.ABSTRACT)) { return; } - if (PsiUtil.isLocalClass(aClass) && !HighlightingFeature.LOCAL_INTERFACES.isAvailable(aClass)) { + if (PsiUtil.isLocalClass(aClass) && !JavaLanguageFeature.LOCAL_INTERFACES.isAvailable(aClass)) { return; } if (!mayBeInterface(aClass)) { diff --git a/java/java-analysis-impl/src/com/siyeh/ig/controlflow/SwitchExpressionCanBePushedDownInspection.java b/java/java-analysis-impl/src/com/siyeh/ig/controlflow/SwitchExpressionCanBePushedDownInspection.java index 39c010ee745d..1411d7e63f60 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/controlflow/SwitchExpressionCanBePushedDownInspection.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/controlflow/SwitchExpressionCanBePushedDownInspection.java @@ -7,6 +7,7 @@ import com.intellij.codeInspection.ProblemsHolder; import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.project.Project; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; @@ -25,7 +26,7 @@ import java.util.*; public final class SwitchExpressionCanBePushedDownInspection extends AbstractBaseJavaLocalInspectionTool { @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.SWITCH_EXPRESSION.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!JavaLanguageFeature.SWITCH_EXPRESSION.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; return new JavaElementVisitor() { @Override public void visitSwitchExpression(@NotNull PsiSwitchExpression expression) { diff --git a/java/java-analysis-impl/src/com/siyeh/ig/inheritance/RedundantMethodOverrideInspection.java b/java/java-analysis-impl/src/com/siyeh/ig/inheritance/RedundantMethodOverrideInspection.java index 4d716d2c2e0e..4ec36a91f3a0 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/inheritance/RedundantMethodOverrideInspection.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/inheritance/RedundantMethodOverrideInspection.java @@ -8,6 +8,7 @@ import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.search.PackageScope; @@ -184,7 +185,7 @@ public final class RedundantMethodOverrideInspection extends BaseInspection { method.isVarArgs() != superMethod.isVarArgs()) { return; } - if (superMethod.hasModifierProperty(PsiModifier.DEFAULT) && !HighlightingFeature.EXTENSION_METHODS.isAvailable(method)) { + if (superMethod.hasModifierProperty(PsiModifier.DEFAULT) && !JavaLanguageFeature.EXTENSION_METHODS.isAvailable(method)) { return; } boolean canBeRemoved = AbstractMethodOverridesAbstractMethodInspection.haveSameParameterTypes(method, superMethod); diff --git a/java/java-analysis-impl/src/com/siyeh/ig/performance/ClassInitializerMayBeStaticInspection.java b/java/java-analysis-impl/src/com/siyeh/ig/performance/ClassInitializerMayBeStaticInspection.java index c497f44b243e..20e169fc2f3a 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/performance/ClassInitializerMayBeStaticInspection.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/performance/ClassInitializerMayBeStaticInspection.java @@ -9,6 +9,7 @@ import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature; import com.intellij.codeInspection.InspectionManager; import com.intellij.codeInspection.LocalQuickFix; import com.intellij.openapi.util.Condition; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; @@ -60,7 +61,7 @@ public final class ClassInitializerMayBeStaticInspection extends BaseInspection final PsiElement scope = containingClass.getScope(); if (!(scope instanceof PsiJavaFile) && !containingClass.hasModifierProperty(PsiModifier.STATIC) && - !HighlightingFeature.INNER_STATICS.isAvailable(containingClass)) { + !JavaLanguageFeature.INNER_STATICS.isAvailable(containingClass)) { return; } diff --git a/java/java-analysis-impl/src/com/siyeh/ig/performance/RedundantStringFormatCallInspection.java b/java/java-analysis-impl/src/com/siyeh/ig/performance/RedundantStringFormatCallInspection.java index 7493eeb87e3d..dec445e84d82 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/performance/RedundantStringFormatCallInspection.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/performance/RedundantStringFormatCallInspection.java @@ -8,6 +8,7 @@ import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.PsiLiteralUtil; @@ -33,7 +34,7 @@ public final class RedundantStringFormatCallInspection extends LocalInspectionTo @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, final boolean isOnTheFly) { - return new RemoveRedundantStringFormatVisitor(holder, isOnTheFly, HighlightingFeature.TEXT_BLOCKS.isAvailable(holder.getFile())); + return new RemoveRedundantStringFormatVisitor(holder, isOnTheFly, JavaLanguageFeature.TEXT_BLOCKS.isAvailable(holder.getFile())); } private static final class RemoveRedundantStringFormatVisitor extends JavaElementVisitor { diff --git a/java/java-analysis-impl/src/com/siyeh/ig/psiutils/CodeBlockSurrounder.java b/java/java-analysis-impl/src/com/siyeh/ig/psiutils/CodeBlockSurrounder.java index 64e1ec8e42de..26848c603658 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/psiutils/CodeBlockSurrounder.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/psiutils/CodeBlockSurrounder.java @@ -8,6 +8,7 @@ import com.intellij.codeInspection.ConditionalBreakInInfiniteLoopInspection; import com.intellij.codeInspection.RedundantLambdaCodeBlockInspection; import com.intellij.codeInspection.dataFlow.DfaPsiUtil; import com.intellij.openapi.project.Project; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.tree.IElementType; @@ -273,7 +274,7 @@ public abstract class CodeBlockSurrounder { if (parentContext != ParentContext.ASSIGNMENT && parentContext != ParentContext.RETURN) return null; return new TernaryToIfSurrounder(expression, conditional, parentSurrounder); } - if (JavaPsiConstructorUtil.isConstructorCall(parent) && !HighlightingFeature.STATEMENTS_BEFORE_SUPER.isAvailable(parent)) { + if (JavaPsiConstructorUtil.isConstructorCall(parent) && !JavaLanguageFeature.STATEMENTS_BEFORE_SUPER.isAvailable(parent)) { return null; } cur = parent; diff --git a/java/java-analysis-impl/src/com/siyeh/ig/psiutils/SwitchUtils.java b/java/java-analysis-impl/src/com/siyeh/ig/psiutils/SwitchUtils.java index 285eea936bf8..4fb8cf96d10f 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/psiutils/SwitchUtils.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/psiutils/SwitchUtils.java @@ -17,6 +17,7 @@ package com.siyeh.ig.psiutils; import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature; import com.intellij.codeInsight.daemon.impl.analysis.SwitchBlockHighlightingModel; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.codeStyle.VariableKind; @@ -184,7 +185,7 @@ public final class SwitchUtils { */ @Contract(pure = true) public static boolean isRuleFormatSwitch(@NotNull PsiSwitchBlock block) { - if (!HighlightingFeature.ENHANCED_SWITCH.isAvailable(block)) { + if (!JavaLanguageFeature.ENHANCED_SWITCH.isAvailable(block)) { return false; } @@ -233,7 +234,7 @@ public final class SwitchUtils { if (languageLevel.isAtLeast(LanguageLevel.JDK_1_7) && type.equalsToText(CommonClassNames.JAVA_LANG_STRING)) { return true; } - return HighlightingFeature.PATTERNS_IN_SWITCH.isAvailable(expression); + return JavaLanguageFeature.PATTERNS_IN_SWITCH.isAvailable(expression); } return false; } @@ -269,7 +270,7 @@ public final class SwitchUtils { return left; } } - if (HighlightingFeature.PATTERNS_IN_SWITCH.isAvailable(expression)) { + if (JavaLanguageFeature.PATTERNS_IN_SWITCH.isAvailable(expression)) { final PsiExpression patternSwitchExpression = findPatternSwitchExpression(expression); if (patternSwitchExpression != null) return patternSwitchExpression; } @@ -431,7 +432,7 @@ public final class SwitchUtils { final PsiExpression instanceOf = ContainerUtil.find(operands, operand -> operand instanceof PsiInstanceOfExpression); StringBuilder builder = new StringBuilder(); builder.append(createPatternCaseText(instanceOf)); - boolean needAppendWhen = HighlightingFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(expression); + boolean needAppendWhen = JavaLanguageFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(expression); for (PsiExpression operand : operands) { if (operand != instanceOf) { builder.append(needAppendWhen ? " when " : " && ").append(operand.getText()); diff --git a/java/java-analysis-impl/src/com/siyeh/ig/style/EscapedSpaceInspection.java b/java/java-analysis-impl/src/com/siyeh/ig/style/EscapedSpaceInspection.java index bcaa4b1356e7..16cbd54bc917 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/style/EscapedSpaceInspection.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/style/EscapedSpaceInspection.java @@ -9,6 +9,7 @@ import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.modcommand.ModPsiUpdater; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.PsiReplacementUtil; @@ -21,7 +22,7 @@ import org.jetbrains.annotations.NotNull; public final class EscapedSpaceInspection extends AbstractBaseJavaLocalInspectionTool implements CleanupLocalInspectionTool { @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.TEXT_BLOCK_ESCAPES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!JavaLanguageFeature.TEXT_BLOCK_ESCAPES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; return new JavaElementVisitor() { @Override public void visitFragment(@NotNull PsiFragment fragment) { diff --git a/java/java-features-trainer/src/com/intellij/java/ift/lesson/essential/JavaOnboardingTourLesson.kt b/java/java-features-trainer/src/com/intellij/java/ift/lesson/essential/JavaOnboardingTourLesson.kt index e9e3acdb8c84..297f79580832 100644 --- a/java/java-features-trainer/src/com/intellij/java/ift/lesson/essential/JavaOnboardingTourLesson.kt +++ b/java/java-features-trainer/src/com/intellij/java/ift/lesson/essential/JavaOnboardingTourLesson.kt @@ -1,18 +1,18 @@ // Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.java.ift.lesson.essential -import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature import com.intellij.java.ift.JavaLessonsBundle import com.intellij.openapi.module.LanguageLevelUtil import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.project.Project import com.intellij.openapi.ui.popup.Balloon +import com.intellij.pom.java.JavaLanguageFeature import com.siyeh.InspectionGadgetsBundle import com.siyeh.IntentionPowerPackBundle import org.jetbrains.annotations.Nls import training.dsl.* import training.dsl.LessonUtil.restoreIfModifiedOrMoved -import training.util.* +import training.util.isToStringContains // store as global const to not load the JavaOnboardingTourLesson class in onboarding promoter on Welcome Screen const val ideaOnboardingLessonId: String = "idea.onboarding" @@ -72,7 +72,7 @@ class JavaOnboardingTourLesson : OnboardingTourLessonBase(ideaOnboardingLessonId fun getIntentionMessage(project: Project): @Nls String { val module = ModuleManager.getInstance(project).modules.firstOrNull() ?: error("Not found modules in project '${project.name}'") val langLevel = LanguageLevelUtil.getEffectiveLanguageLevel(module) - val messageKey = if (langLevel.isAtLeast(HighlightingFeature.TEXT_BLOCKS.level)) { + val messageKey = if (JavaLanguageFeature.TEXT_BLOCKS.isSufficient(langLevel)) { "replace.concatenation.with.format.string.intention.name.formatted" } else "replace.concatenation.with.format.string.intention.name" diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/DeconstructionCanBeUsedInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/DeconstructionCanBeUsedInspection.java index 6f39ea225c9e..353cd0141b7c 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/DeconstructionCanBeUsedInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/DeconstructionCanBeUsedInspection.java @@ -6,6 +6,7 @@ import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.VariableKind; import com.intellij.psi.impl.light.LightRecordField; @@ -27,7 +28,7 @@ public final class DeconstructionCanBeUsedInspection extends AbstractBaseJavaLoc @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!JavaLanguageFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; return new JavaElementVisitor() { @Override public void visitInstanceOfExpression(@NotNull PsiInstanceOfExpression expression) { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/DuplicateBranchesInSwitchInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/DuplicateBranchesInSwitchInspection.java index 394a490b60b2..5e7def674661 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/DuplicateBranchesInSwitchInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/DuplicateBranchesInSwitchInspection.java @@ -9,6 +9,7 @@ import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.impl.source.tree.JavaElementType; import com.intellij.psi.search.LocalSearchScope; @@ -1079,7 +1080,7 @@ public final class DuplicateBranchesInSwitchInspection extends LocalInspectionTo if (labelElementList == null) return false; PsiCaseLabelElement[] elements = labelElementList.getElements(); return !ContainerUtil.exists(elements, - element -> element instanceof PsiPattern && (!HighlightingFeature.UNNAMED_PATTERNS_AND_VARIABLES.isAvailable(element) || + element -> element instanceof PsiPattern && (!JavaLanguageFeature.UNNAMED_PATTERNS_AND_VARIABLES.isAvailable(element) || JavaPsiPatternUtil.containsNamedPatternVariable(element)) || element instanceof PsiExpression expr && ExpressionUtils.isNullLiteral(expr)); } diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/ExplicitToImplicitClassMigrationInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/ExplicitToImplicitClassMigrationInspection.java index 30b94476dea4..5581903a86f9 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/ExplicitToImplicitClassMigrationInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/ExplicitToImplicitClassMigrationInspection.java @@ -11,6 +11,7 @@ import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.search.PackageScope; import com.intellij.psi.search.PsiSearchHelper; @@ -27,7 +28,7 @@ public final class ExplicitToImplicitClassMigrationInspection extends AbstractBa @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.IMPLICIT_CLASSES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!JavaLanguageFeature.IMPLICIT_CLASSES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; return new JavaElementVisitor() { @Override public void visitClass(@NotNull PsiClass aClass) { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/FillPermitsListInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/FillPermitsListInspection.java index bfee41f836b2..2b7659f1162b 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/FillPermitsListInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/FillPermitsListInspection.java @@ -4,6 +4,7 @@ package com.intellij.codeInspection; import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature; import com.intellij.codeInsight.intention.impl.FillPermitsListFix; import com.intellij.java.JavaBundle; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.search.searches.DirectClassInheritorsSearch; import com.intellij.psi.util.PsiUtil; @@ -18,7 +19,7 @@ public final class FillPermitsListInspection extends AbstractBaseJavaLocalInspec @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.SEALED_CLASSES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!JavaLanguageFeature.SEALED_CLASSES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; return new JavaElementVisitor() { @Override public void visitClass(@NotNull PsiClass psiClass) { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/ForEachWithRecordPatternCanBeUsedInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/ForEachWithRecordPatternCanBeUsedInspection.java index 2be782b3e6ad..2cc3c67e4133 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/ForEachWithRecordPatternCanBeUsedInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/ForEachWithRecordPatternCanBeUsedInspection.java @@ -7,6 +7,7 @@ import com.intellij.codeInspection.options.OptPane; import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.project.Project; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.VariableKind; import com.intellij.psi.util.JavaPsiRecordUtil; @@ -69,7 +70,7 @@ public final class ForEachWithRecordPatternCanBeUsedInspection extends AbstractB @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.RECORD_PATTERNS_IN_FOR_EACH.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!JavaLanguageFeature.RECORD_PATTERNS_IN_FOR_EACH.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; boolean useVar = IntroduceVariableBase.createVarType() || forceUseVar; return new JavaElementVisitor() { private final Options options = new Options(maxNotUsedComponentCounts, diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/ImplicitToExplicitClassBackwardMigrationInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/ImplicitToExplicitClassBackwardMigrationInspection.java index 21186269a1a1..e15331d125d8 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/ImplicitToExplicitClassBackwardMigrationInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/ImplicitToExplicitClassBackwardMigrationInspection.java @@ -6,6 +6,7 @@ import com.intellij.java.JavaBundle; import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.project.Project; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.*; import com.intellij.psi.util.PsiMethodUtil; @@ -20,7 +21,7 @@ public final class ImplicitToExplicitClassBackwardMigrationInspection extends Ab @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.IMPLICIT_CLASSES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!JavaLanguageFeature.IMPLICIT_CLASSES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; return new JavaElementVisitor() { @Override public void visitImplicitClass(@NotNull PsiImplicitClass aClass) { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/InconsistentTextBlockIndentInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/InconsistentTextBlockIndentInspection.java index 569331d4ecb5..73e2c06e0cc5 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/InconsistentTextBlockIndentInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/InconsistentTextBlockIndentInspection.java @@ -10,6 +10,7 @@ import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.JavaElementVisitor; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElementVisitor; @@ -28,7 +29,7 @@ import static com.intellij.util.ObjectUtils.tryCast; public final class InconsistentTextBlockIndentInspection extends AbstractBaseJavaLocalInspectionTool { @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.TEXT_BLOCKS.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!JavaLanguageFeature.TEXT_BLOCKS.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; return new JavaElementVisitor() { @Override public void visitLiteralExpression(@NotNull PsiLiteralExpression expression) { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/MeaninglessRecordAnnotationInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/MeaninglessRecordAnnotationInspection.java index 91fe89cd297d..9741a5874eb8 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/MeaninglessRecordAnnotationInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/MeaninglessRecordAnnotationInspection.java @@ -5,6 +5,7 @@ import com.intellij.codeInsight.AnnotationTargetUtil; import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature; import com.intellij.codeInsight.daemon.impl.quickfix.DeleteElementFix; import com.intellij.java.JavaBundle; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.PsiAnnotation.TargetType; import com.intellij.psi.util.JavaPsiRecordUtil; @@ -23,7 +24,7 @@ public final class MeaninglessRecordAnnotationInspection extends AbstractBaseJav @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.RECORDS.isAvailable(holder.getFile())) { + if (!JavaLanguageFeature.RECORDS.isAvailable(holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/PatternVariableCanBeUsedInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/PatternVariableCanBeUsedInspection.java index fcc7730b6498..7604a1db3f75 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/PatternVariableCanBeUsedInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/PatternVariableCanBeUsedInspection.java @@ -6,6 +6,7 @@ import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature; import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.project.Project; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.codeStyle.JavaCodeStyleSettings; @@ -29,11 +30,11 @@ public final class PatternVariableCanBeUsedInspection extends AbstractBaseJavaLo @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.PATTERNS.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!JavaLanguageFeature.PATTERNS.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; return new JavaElementVisitor() { @Override public void visitMethodCallExpression(@NotNull PsiMethodCallExpression call) { - if (!HighlightingFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(holder.getFile())) return; + if (!JavaLanguageFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(holder.getFile())) return; PsiTypeCastExpression qualifier = getQualifierReferenceExpression(call); if (qualifier == null) return; PsiInstanceOfExpression candidate = InstanceOfUtils.findPatternCandidate(qualifier); diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/RecordCanBeClassInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/RecordCanBeClassInspection.java index 7480f62c0f8b..c060595391e0 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/RecordCanBeClassInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/RecordCanBeClassInspection.java @@ -4,6 +4,7 @@ package com.intellij.codeInspection; import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature; import com.intellij.java.JavaBundle; import com.intellij.openapi.util.TextRange; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.*; import org.jetbrains.annotations.NotNull; @@ -11,7 +12,7 @@ import org.jetbrains.annotations.NotNull; public final class RecordCanBeClassInspection extends AbstractBaseJavaLocalInspectionTool { @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.RECORDS.isAvailable(holder.getFile())) { + if (!JavaLanguageFeature.RECORDS.isAvailable(holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/RedundantRecordConstructorInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/RedundantRecordConstructorInspection.java index a96ea2122a62..8101d87cb533 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/RedundantRecordConstructorInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/RedundantRecordConstructorInspection.java @@ -11,6 +11,7 @@ import com.intellij.java.JavaBundle; import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.project.Project; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.util.JavaElementKind; import com.intellij.psi.util.JavaPsiRecordUtil; @@ -33,7 +34,7 @@ import java.util.Set; public final class RedundantRecordConstructorInspection extends AbstractBaseJavaLocalInspectionTool { @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.RECORDS.isAvailable(holder.getFile())) { + if (!JavaLanguageFeature.RECORDS.isAvailable(holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/StringTemplateMigrationInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/StringTemplateMigrationInspection.java index c7482bcca907..879057705a4f 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/StringTemplateMigrationInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/StringTemplateMigrationInspection.java @@ -7,6 +7,7 @@ import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.util.PsiLiteralUtil; @@ -27,7 +28,7 @@ public final class StringTemplateMigrationInspection extends AbstractBaseJavaLoc @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.STRING_TEMPLATES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!JavaLanguageFeature.STRING_TEMPLATES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; return new JavaElementVisitor() { @Override public void visitPolyadicExpression(@NotNull PsiPolyadicExpression expression) { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/TextBlockMigrationInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/TextBlockMigrationInspection.java index eb98f51622e0..51987614ed28 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/TextBlockMigrationInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/TextBlockMigrationInspection.java @@ -10,6 +10,7 @@ import com.intellij.openapi.editor.Document; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.*; import com.intellij.psi.util.PsiLiteralUtil; @@ -38,7 +39,7 @@ public final class TextBlockMigrationInspection extends AbstractBaseJavaLocalIns @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.TEXT_BLOCKS.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!JavaLanguageFeature.TEXT_BLOCKS.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; return new JavaElementVisitor() { @Override public void visitPolyadicExpression(@NotNull PsiPolyadicExpression expression) { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/TrailingWhitespacesInTextBlockInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/TrailingWhitespacesInTextBlockInspection.java index 2f0e6256884b..59049f9ea5a9 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/TrailingWhitespacesInTextBlockInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/TrailingWhitespacesInTextBlockInspection.java @@ -9,6 +9,7 @@ import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.impl.source.tree.java.PsiFragmentImpl; @@ -23,7 +24,7 @@ import java.util.function.Function; public final class TrailingWhitespacesInTextBlockInspection extends AbstractBaseJavaLocalInspectionTool { @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.TEXT_BLOCKS.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!JavaLanguageFeature.TEXT_BLOCKS.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; return new JavaElementVisitor() { @Override public void visitTemplate(@NotNull PsiTemplate template) { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/classCanBeRecord/ClassCanBeRecordInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/classCanBeRecord/ClassCanBeRecordInspection.java index 33d2547089e5..6459aed70824 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/classCanBeRecord/ClassCanBeRecordInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/classCanBeRecord/ClassCanBeRecordInspection.java @@ -11,6 +11,7 @@ import com.intellij.java.JavaBundle; import com.intellij.openapi.compiler.JavaCompilerBundle; import com.intellij.openapi.util.NlsSafe; import com.intellij.openapi.util.text.HtmlChunk; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.PsiAnnotation; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiFile; @@ -47,7 +48,7 @@ public final class ClassCanBeRecordInspection extends BaseInspection { @Override public boolean shouldInspect(@NotNull PsiFile file) { - return HighlightingFeature.RECORDS.isAvailable(file); + return JavaLanguageFeature.RECORDS.isAvailable(file); } @Override diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/dataFlow/DataFlowInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/dataFlow/DataFlowInspection.java index 5289ca19c3b5..ab73709ef888 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/dataFlow/DataFlowInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/dataFlow/DataFlowInspection.java @@ -10,6 +10,7 @@ import com.intellij.codeInspection.dataFlow.fix.*; import com.intellij.codeInspection.nullable.NullableStuffInspection; import com.intellij.codeInspection.options.OptPane; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.util.PsiPrecedenceUtil; @@ -188,7 +189,7 @@ public final class DataFlowInspection extends DataFlowInspectionBase { } private static void addCreateNullBranchFix(@NotNull PsiExpression qualifier, @NotNull List fixes) { - if (!HighlightingFeature.PATTERNS_IN_SWITCH.isAvailable(qualifier)) return; + if (!JavaLanguageFeature.PATTERNS_IN_SWITCH.isAvailable(qualifier)) return; PsiElement parent = PsiUtil.skipParenthesizedExprUp(qualifier.getParent()); if (parent instanceof PsiSwitchBlock block && PsiUtil.skipParenthesizedExprDown(block.getExpression()) == qualifier) { fixes.add(LocalQuickFix.from(new CreateNullBranchFix(block))); diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/enhancedSwitch/RedundantLabeledSwitchRuleCodeBlockInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/enhancedSwitch/RedundantLabeledSwitchRuleCodeBlockInspection.java index 008fd8ac7ac9..ae8056d58ef3 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/enhancedSwitch/RedundantLabeledSwitchRuleCodeBlockInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/enhancedSwitch/RedundantLabeledSwitchRuleCodeBlockInspection.java @@ -7,6 +7,7 @@ import com.intellij.codeInspection.ProblemsHolder; import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.project.Project; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; import com.siyeh.ig.psiutils.CommentTracker; @@ -20,7 +21,7 @@ public final class RedundantLabeledSwitchRuleCodeBlockInspection extends LocalIn @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.ENHANCED_SWITCH.isAvailable(holder.getFile())) { + if (!JavaLanguageFeature.ENHANCED_SWITCH.isAvailable(holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/enhancedSwitch/SwitchLabeledRuleCanBeCodeBlockInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/enhancedSwitch/SwitchLabeledRuleCanBeCodeBlockInspection.java index 3b90608c496d..fa0b8af4cbfc 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/enhancedSwitch/SwitchLabeledRuleCanBeCodeBlockInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/enhancedSwitch/SwitchLabeledRuleCanBeCodeBlockInspection.java @@ -8,6 +8,7 @@ import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.project.Project; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.*; import com.intellij.util.ObjectUtils; @@ -21,7 +22,7 @@ public final class SwitchLabeledRuleCanBeCodeBlockInspection extends LocalInspec @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.ENHANCED_SWITCH.isAvailable(holder.getFile())) { + if (!JavaLanguageFeature.ENHANCED_SWITCH.isAvailable(holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/java19api/Java9UndeclaredServiceUsageInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/java19api/Java9UndeclaredServiceUsageInspection.java index b4b90281aa7b..f4afe6bcce6f 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/java19api/Java9UndeclaredServiceUsageInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/java19api/Java9UndeclaredServiceUsageInspection.java @@ -7,6 +7,7 @@ import com.intellij.codeInsight.daemon.impl.quickfix.AddUsesDirectiveFix; import com.intellij.codeInspection.AbstractBaseJavaLocalInspectionTool; import com.intellij.codeInspection.ProblemsHolder; import com.intellij.java.JavaBundle; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.impl.source.resolve.reference.impl.JavaReflectionReferenceUtil; import org.jetbrains.annotations.NotNull; @@ -19,7 +20,7 @@ public final class Java9UndeclaredServiceUsageInspection extends AbstractBaseJav @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.MODULES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!JavaLanguageFeature.MODULES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; return new JavaElementVisitor() { @Override public void visitMethodCallExpression(@NotNull PsiMethodCallExpression expression) { diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/CallBuilder.kt b/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/CallBuilder.kt index 4d21b8996f7a..dd49fe9e62fd 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/CallBuilder.kt +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/CallBuilder.kt @@ -2,6 +2,7 @@ package com.intellij.refactoring.extractMethod.newImpl import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature +import com.intellij.pom.java.JavaLanguageFeature import com.intellij.psi.* import com.intellij.psi.codeStyle.CodeStyleManager import com.intellij.psi.impl.source.resolve.JavaResolveUtil @@ -46,7 +47,7 @@ class CallBuilder(private val context: PsiElement) { PsiUtil.setModifierProperty(declaredVariable, PsiModifier.FINAL, declareFinal) val isInferredVar = outputVariable?.typeElement?.isInferredType == true - if (isInferredVar || HighlightingFeature.LVTI.isAvailable(context) && settings.INTRODUCE_LOCAL_CREATE_VAR_TYPE == true) { + if (isInferredVar || JavaLanguageFeature.LVTI.isAvailable(context) && settings.INTRODUCE_LOCAL_CREATE_VAR_TYPE == true) { IntroduceVariableUtil.expandDiamondsAndReplaceExplicitTypeWithVar(declaredVariable.typeElement, declaredVariable) } } diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/ExtractOptionsPipeline.kt b/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/ExtractOptionsPipeline.kt index 8d7edb4f91e0..bb08c0af11b6 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/ExtractOptionsPipeline.kt +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/ExtractOptionsPipeline.kt @@ -10,6 +10,7 @@ import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project import com.intellij.openapi.util.TextRange import com.intellij.openapi.util.text.StringUtil +import com.intellij.pom.java.JavaLanguageFeature import com.intellij.psi.* import com.intellij.psi.formatter.java.MultipleFieldDeclarationHelper import com.intellij.psi.search.LocalSearchScope @@ -206,7 +207,7 @@ object ExtractMethodPipeline { fun withForcedStatic(analyzer: CodeFragmentAnalyzer, extractOptions: ExtractOptions): ExtractOptions? { val targetClass = extractOptions.targetClass val isInnerClass = PsiUtil.isLocalOrAnonymousClass(targetClass) || PsiUtil.isInnerClass(targetClass) - if (isInnerClass && !HighlightingFeature.INNER_STATICS.isAvailable(targetClass)) return null + if (isInnerClass && !JavaLanguageFeature.INNER_STATICS.isAvailable(targetClass)) return null val memberUsages = analyzer.findInstanceMemberUsages(targetClass, extractOptions.elements) if (memberUsages.any(::isNotExtractableUsage)) return null val addedParameters = memberUsages.groupBy(MemberUsage::member).entries diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/parameterObject/ParameterObjectUtils.kt b/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/parameterObject/ParameterObjectUtils.kt index e6a5addb1ae5..cf12e22a17b0 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/parameterObject/ParameterObjectUtils.kt +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/parameterObject/ParameterObjectUtils.kt @@ -2,6 +2,7 @@ package com.intellij.refactoring.extractMethod.newImpl.parameterObject import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature +import com.intellij.pom.java.JavaLanguageFeature import com.intellij.psi.* import com.intellij.psi.search.searches.ReferencesSearch import com.intellij.psi.util.PsiTreeUtil @@ -13,7 +14,7 @@ object ParameterObjectUtils { val factory = PsiElementFactory.getInstance(introducedClass.project) val typeParameters = introducedClass.typeParameters.map(factory::createType).toTypedArray() val type = factory.createType(introducedClass, *typeParameters) - val typeElement = if (HighlightingFeature.DIAMOND_TYPES.isAvailable(introducedClass) && typeParameters.isNotEmpty()) { + val typeElement = if (JavaLanguageFeature.DIAMOND_TYPES.isAvailable(introducedClass) && typeParameters.isNotEmpty()) { "${type.name}<>" } else { type.canonicalText diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/parameterObject/ResultObjectExtractor.kt b/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/parameterObject/ResultObjectExtractor.kt index 879edb9804a9..1e1d346a529c 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/parameterObject/ResultObjectExtractor.kt +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/parameterObject/ResultObjectExtractor.kt @@ -12,6 +12,7 @@ import com.intellij.openapi.command.impl.StartMarkAction import com.intellij.openapi.diff.DiffColors import com.intellij.openapi.editor.Editor import com.intellij.openapi.util.Disposer +import com.intellij.pom.java.JavaLanguageFeature import com.intellij.psi.* import com.intellij.psi.util.PsiTreeUtil import com.intellij.refactoring.extractMethod.ExtractMethodHandler @@ -43,7 +44,7 @@ object ResultObjectExtractor { InplaceExtractUtils.showExtractErrorHint(editor, ExtractMultipleVariablesException(variables, scope)) return } - val shouldInsertRecord = HighlightingFeature.RECORDS.isAvailable(variables.first()) + val shouldInsertRecord = JavaLanguageFeature.RECORDS.isAvailable(variables.first()) val objectBuilder = if (shouldInsertRecord) { RecordResultObjectBuilder.create(variables) } else { diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/inline/InlineMethodProcessor.java b/java/java-impl-refactorings/src/com/intellij/refactoring/inline/InlineMethodProcessor.java index e70c260b5f07..7bf531852362 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/inline/InlineMethodProcessor.java +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/inline/InlineMethodProcessor.java @@ -21,6 +21,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.codeStyle.JavaCodeStyleManager; @@ -932,7 +933,7 @@ public class InlineMethodProcessor extends BaseRefactoringProcessor { } public static @DialogMessage String checkUnableToInsertCodeBlock(PsiCodeBlock methodBody, PsiElement element) { - if (!HighlightingFeature.STATEMENTS_BEFORE_SUPER.isAvailable(element) && + if (!JavaLanguageFeature.STATEMENTS_BEFORE_SUPER.isAvailable(element) && checkUnableToInsertCodeBlock(methodBody, element, expr -> JavaPsiConstructorUtil.isConstructorCall(expr) && expr.getMethodExpression() != element)) { return JavaRefactoringBundle.message("inline.method.multiline.method.in.ctor.call"); diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/introduceField/IntroduceFieldHandler.java b/java/java-impl-refactorings/src/com/intellij/refactoring/introduceField/IntroduceFieldHandler.java index ec00ef0da4c7..1e3b713f1686 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/introduceField/IntroduceFieldHandler.java +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/introduceField/IntroduceFieldHandler.java @@ -9,6 +9,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.NlsContexts; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.wm.WindowManager; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; @@ -122,7 +123,7 @@ public class IntroduceFieldHandler extends BaseExpressionToFieldHandler implemen declareStatic = isInSuperOrThis = isInSuperOrThis(occurrences[i]); } } - if (isInSuperOrThis && HighlightingFeature.STATIC_INTERFACE_CALLS.isAvailable(expr != null ? expr : anchorElement)) { + if (isInSuperOrThis && JavaLanguageFeature.STATIC_INTERFACE_CALLS.isAvailable(expr != null ? expr : anchorElement)) { isInSuperOrThis = false; } int occurrencesNumber = occurrences.length; diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/introduceField/LocalToFieldHandler.java b/java/java-impl-refactorings/src/com/intellij/refactoring/introduceField/LocalToFieldHandler.java index 5bdd1228fe31..3f84555ccca8 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/introduceField/LocalToFieldHandler.java +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/introduceField/LocalToFieldHandler.java @@ -15,6 +15,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.NlsContexts; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.search.GlobalSearchScope; @@ -122,7 +123,7 @@ public abstract class LocalToFieldHandler { * @return true, if adding a non-compile-time constants static field to the specified class is allowed. False otherwise. */ public static boolean isStaticFieldAllowed(@NotNull PsiClass aClass) { - if (HighlightingFeature.INNER_STATICS.isAvailable(aClass)) { + if (JavaLanguageFeature.INNER_STATICS.isAvailable(aClass)) { return true; } return aClass.hasModifierProperty(PsiModifier.STATIC) || aClass.getParent() instanceof PsiJavaFile; diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/introduceVariable/IntroduceVariableBase.java b/java/java-impl-refactorings/src/com/intellij/refactoring/introduceVariable/IntroduceVariableBase.java index dfe70e88fd8f..f010632d52be 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/introduceVariable/IntroduceVariableBase.java +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/introduceVariable/IntroduceVariableBase.java @@ -27,6 +27,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.*; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.wm.WindowManager; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleSettings; import com.intellij.psi.codeStyle.SuggestedNameInfo; @@ -563,7 +564,7 @@ public abstract class IntroduceVariableBase extends IntroduceHandlerBase { } public static boolean canBeExtractedWithoutExplicitType(PsiExpression expr) { - if (HighlightingFeature.LVTI.isAvailable(expr)) { + if (JavaLanguageFeature.LVTI.isAvailable(expr)) { PsiType type = getNormalizedType(expr); if (type != null && !PsiTypes.nullType().equals(type) && PsiTypesUtil.isDenotableType(type, expr)) { PsiExpression copy = @@ -832,7 +833,7 @@ public abstract class IntroduceVariableBase extends IntroduceHandlerBase { } private boolean checkAnchorBeforeThisOrSuper(Project project, Editor editor, PsiElement tempAnchorElement) { - if (HighlightingFeature.STATEMENTS_BEFORE_SUPER.isAvailable(tempAnchorElement)) { + if (JavaLanguageFeature.STATEMENTS_BEFORE_SUPER.isAvailable(tempAnchorElement)) { return false; } if (tempAnchorElement instanceof PsiExpressionStatement) { diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/introduceVariable/VariableExtractor.java b/java/java-impl-refactorings/src/com/intellij/refactoring/introduceVariable/VariableExtractor.java index fbacd0904731..9355748363e5 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/introduceVariable/VariableExtractor.java +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/introduceVariable/VariableExtractor.java @@ -18,6 +18,7 @@ import com.intellij.openapi.editor.ScrollType; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Computable; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.impl.light.LightJavaToken; @@ -336,7 +337,7 @@ final class VariableExtractor { } Set allOccurrences = StreamEx.of(occurrences).filter(PsiElement::isPhysical).append(expr).toSet(); PsiExpression firstOccurrence = Collections.min(allOccurrences, Comparator.comparing(e -> e.getTextRange().getStartOffset())); - if (HighlightingFeature.PATTERNS.isAvailable(anchor)) { + if (JavaLanguageFeature.PATTERNS.isAvailable(anchor)) { PsiTypeCastExpression cast = ObjectUtils.tryCast(PsiUtil.skipParenthesizedExprDown(firstOccurrence), PsiTypeCastExpression.class); if (cast != null) { PsiType castType = cast.getType(); diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/introduceparameterobject/JavaIntroduceParameterObjectClassDescriptor.java b/java/java-impl-refactorings/src/com/intellij/refactoring/introduceparameterobject/JavaIntroduceParameterObjectClassDescriptor.java index 267eba1600d7..1e9180b7a795 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/introduceparameterobject/JavaIntroduceParameterObjectClassDescriptor.java +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/introduceparameterobject/JavaIntroduceParameterObjectClassDescriptor.java @@ -24,6 +24,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.codeStyle.JavaCodeStyleManager; @@ -139,7 +140,7 @@ public class JavaIntroduceParameterObjectClassDescriptor extends IntroduceParame if (bean != null && bean.getField() != null) { getter = GenerateMembersUtil.suggestGetterName(bean.getField()); } - else if (bean == null && access == ReadWriteAccessDetector.Access.Read && HighlightingFeature.RECORDS.isAvailable(context)) { + else if (bean == null && access == ReadWriteAccessDetector.Access.Read && JavaLanguageFeature.RECORDS.isAvailable(context)) { getter = paramInfo.getName(); } else { diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/introduceparameterobject/ParameterObjectBuilder.java b/java/java-impl-refactorings/src/com/intellij/refactoring/introduceparameterobject/ParameterObjectBuilder.java index 85c73289d141..3e97323548a3 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/introduceparameterobject/ParameterObjectBuilder.java +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/introduceparameterobject/ParameterObjectBuilder.java @@ -20,6 +20,7 @@ import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature; import com.intellij.codeInsight.generation.GenerateMembersUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.codeStyle.JavaCodeStyleManager; @@ -76,7 +77,7 @@ class ParameterObjectBuilder { } public String buildBeanClass() { - boolean recordsAvailable = HighlightingFeature.RECORDS.isAvailable(myFile) && + boolean recordsAvailable = JavaLanguageFeature.RECORDS.isAvailable(myFile) && !ContainerUtil.exists(fields, ParameterSpec::isSetterRequired); @NonNls final StringBuilder out = new StringBuilder(1024); if (packageName.length() > 0) out.append("package ").append(packageName).append(';'); diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/makeStatic/MakeStaticHandler.java b/java/java-impl-refactorings/src/com/intellij/refactoring/makeStatic/MakeStaticHandler.java index 3643a1239da3..ffe09e879650 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/makeStatic/MakeStaticHandler.java +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/makeStatic/MakeStaticHandler.java @@ -14,6 +14,7 @@ import com.intellij.openapi.editor.ScrollType; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.NlsContexts; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.codeStyle.VariableKind; @@ -138,7 +139,7 @@ public class MakeStaticHandler implements RefactoringActionHandler, ContextAware return RefactoringBundle.getCannotRefactorMessage(RefactoringBundle.message("cannot.make.abstract.method.static")); } - if(PsiUtil.isLocalOrAnonymousClass(containingClass) && !HighlightingFeature.INNER_STATICS.isAvailable(member) || + if(PsiUtil.isLocalOrAnonymousClass(containingClass) && !JavaLanguageFeature.INNER_STATICS.isAvailable(member) || containingClass.getContainingClass() != null && !containingClass.hasModifierProperty(PsiModifier.STATIC)) { return RefactoringBundle.getCannotRefactorMessage(RefactoringBundle.message("inner.classes.cannot.have.static.members")); } diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java b/java/java-impl-refactorings/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java index 8139d1bc13de..3525bf5b7c20 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java @@ -6,6 +6,7 @@ import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature; import com.intellij.java.JavaBundle; import com.intellij.java.refactoring.JavaRefactoringBundle; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.search.LocalSearchScope; import com.intellij.psi.search.searches.ReferencesSearch; @@ -217,7 +218,7 @@ public class PushDownConflicts { if (movedMember.hasModifierProperty(PsiModifier.STATIC) && !targetClass.hasModifierProperty(PsiModifier.STATIC) && !(targetClass.getParent() instanceof PsiFile) && - !HighlightingFeature.INNER_STATICS.isAvailable(targetClass)) { + !JavaLanguageFeature.INNER_STATICS.isAvailable(targetClass)) { myConflicts.putValue(movedMember, JavaBundle.message("push.down.static.nonstatic.conflict", RefactoringUIUtil.getDescription(movedMember, false), RefactoringUIUtil.getDescription(targetClass, false))); diff --git a/java/java-impl/src/com/intellij/codeEditor/JavaStripTrailingSpacesFilterFactory.java b/java/java-impl/src/com/intellij/codeEditor/JavaStripTrailingSpacesFilterFactory.java index 3e8686a9dab4..a3e0c3fbcb1f 100644 --- a/java/java-impl/src/com/intellij/codeEditor/JavaStripTrailingSpacesFilterFactory.java +++ b/java/java-impl/src/com/intellij/codeEditor/JavaStripTrailingSpacesFilterFactory.java @@ -6,6 +6,7 @@ import com.intellij.lang.Language; import com.intellij.lang.java.JavaLanguage; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.impl.PsiBasedStripTrailingSpacesFilter; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.JavaRecursiveElementWalkingVisitor; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiLiteralExpression; @@ -31,7 +32,7 @@ public final class JavaStripTrailingSpacesFilterFactory extends PsiBasedStripTra @Override protected void process(@NotNull PsiFile psiFile) { - if (!HighlightingFeature.TEXT_BLOCKS.isAvailable(psiFile)) return; + if (!JavaLanguageFeature.TEXT_BLOCKS.isAvailable(psiFile)) return; psiFile.accept(new JavaRecursiveElementWalkingVisitor() { @Override public void visitLiteralExpression(@NotNull PsiLiteralExpression expression) { diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaClassNameInsertHandler.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaClassNameInsertHandler.java index 0f5ae7bef2cd..4ed766e16c74 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaClassNameInsertHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaClassNameInsertHandler.java @@ -13,6 +13,7 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.EditorModificationUtilEx; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; @@ -116,7 +117,7 @@ class JavaClassNameInsertHandler implements InsertHandler 0) { + if (ref != null && JavaLanguageFeature.PATTERNS.isAvailable(ref) && psiClass.getTypeParameters().length > 0) { PsiExpression instanceOfOperand = JavaCompletionUtil.getInstanceOfOperand(ref); if (instanceOfOperand != null) { PsiClassType origType = JavaPsiFacade.getElementFactory(project).createType(psiClass); diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java index 5ce4fba310e4..820c9274c5ae 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java @@ -39,6 +39,7 @@ import com.intellij.patterns.ElementPattern; import com.intellij.patterns.PatternCondition; import com.intellij.patterns.PsiJavaElementPattern; import com.intellij.patterns.PsiNameValuePairPattern; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.codeStyle.CommonCodeStyleSettings; @@ -274,7 +275,7 @@ public final class JavaCompletionContributor extends CompletionContributor imple return element instanceof PsiEnumConstant; } }; - if (!HighlightingFeature.PATTERNS_IN_SWITCH.isAvailable(position)) { + if (!JavaLanguageFeature.PATTERNS_IN_SWITCH.isAvailable(position)) { return enumClassFilter; } @@ -321,7 +322,7 @@ public final class JavaCompletionContributor extends CompletionContributor imple } }; - if (!HighlightingFeature.PATTERNS_IN_SWITCH.isAvailable(position) || + if (!JavaLanguageFeature.PATTERNS_IN_SWITCH.isAvailable(position) || isPrimitive(selectorType) || TypeUtils.isJavaLangString(selectorType)) { ClassFilter classFilter = new ClassFilter(PsiClass.class) { @Override @@ -1012,7 +1013,7 @@ public final class JavaCompletionContributor extends CompletionContributor imple } if (IN_SWITCH_LABEL.accepts(position)) { - return HighlightingFeature.PATTERNS_IN_SWITCH.isAvailable(parent); + return JavaLanguageFeature.PATTERNS_IN_SWITCH.isAvailable(parent); } if (psiElement().inside(PsiImportStatement.class).accepts(parent)) { diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java index 94d77004453a..8558ca9f5e59 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java @@ -29,6 +29,7 @@ import com.intellij.openapi.util.*; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.patterns.PsiJavaPatterns; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CommonCodeStyleSettings; @@ -535,7 +536,7 @@ public final class JavaCompletionUtil { if (ReferenceListWeigher.INSTANCE.getApplicability(psiClass, myPlace) == inapplicable) { return new MarkProblem(MarkType.RED, null); } - if (HighlightingFeature.MODULES.isAvailable(myPlace)) { + if (JavaLanguageFeature.MODULES.isAvailable(myPlace)) { final PsiJavaModule currentModule = ReadAction.compute(() -> JavaModuleGraphUtil.findDescriptorByFile(myOriginalFile, myPlace.getProject())); if (currentModule != null) { final PsiJavaModule targetModule = ReadAction.compute(() -> JavaModuleGraphUtil.findDescriptorByElement(psiClass)); diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java index 47c42df6c2d4..f6a105bd0b12 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java @@ -14,6 +14,7 @@ import com.intellij.openapi.util.Conditions; import com.intellij.openapi.util.text.StringUtil; import com.intellij.patterns.ElementPattern; import com.intellij.patterns.PsiElementPattern; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; @@ -257,7 +258,7 @@ public class JavaKeywordCompletion { if (!canAddKeywords()) return; PsiFile file = myPosition.getContainingFile(); - if (PsiJavaModule.MODULE_INFO_FILE.equals(file.getName()) && HighlightingFeature.MODULES.isAvailable(file)) { + if (PsiJavaModule.MODULE_INFO_FILE.equals(file.getName()) && JavaLanguageFeature.MODULES.isAvailable(file)) { addModuleKeywords(); return; } @@ -326,7 +327,7 @@ public class JavaKeywordCompletion { } private void addCaseAfterNullDefault() { - if (!HighlightingFeature.PATTERNS_IN_SWITCH.isAvailable(myPosition)) return; + if (!JavaLanguageFeature.PATTERNS_IN_SWITCH.isAvailable(myPosition)) return; PsiCaseLabelElementList labels = PsiTreeUtil.getParentOfType(myPosition, PsiCaseLabelElementList.class); if (labels == null || labels.getElementCount() != 2 || !(labels.getElements()[0] instanceof PsiLiteralExpression literalExpression && @@ -362,7 +363,7 @@ public class JavaKeywordCompletion { } private void addWhen() { - if (!HighlightingFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(myPosition)) { + if (!JavaLanguageFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(myPosition)) { return; } PsiElement element = PsiTreeUtil.skipWhitespacesAndCommentsForward(myPrevLeaf); @@ -457,7 +458,7 @@ public class JavaKeywordCompletion { } private boolean isInsideCaseLabel() { - if (!HighlightingFeature.PATTERNS_IN_SWITCH.isAvailable(myPosition)) return false; + if (!JavaLanguageFeature.PATTERNS_IN_SWITCH.isAvailable(myPosition)) return false; return psiElement().withSuperParent(2, PsiCaseLabelElementList.class).accepts(myPosition); } @@ -468,11 +469,11 @@ public class JavaKeywordCompletion { } private boolean isVarAllowed() { - if (HighlightingFeature.VAR_LAMBDA_PARAMETER.isAvailable(myPosition) && isLambdaParameterType()) { + if (JavaLanguageFeature.VAR_LAMBDA_PARAMETER.isAvailable(myPosition) && isLambdaParameterType()) { return true; } - if (!HighlightingFeature.LVTI.isAvailable(myPosition)) return false; + if (!JavaLanguageFeature.LVTI.isAvailable(myPosition)) return false; if (isAtCatchOrResourceVariableStart(myPosition) && PsiTreeUtil.getParentOfType(myPosition, PsiCatchSection.class) == null) { return true; @@ -532,7 +533,7 @@ public class JavaKeywordCompletion { } private void addPatternMatchingInSwitchCases() { - if (!HighlightingFeature.PATTERNS_IN_SWITCH.isAvailable(myPosition)) return; + if (!JavaLanguageFeature.PATTERNS_IN_SWITCH.isAvailable(myPosition)) return; PsiSwitchBlock switchBlock = getSwitchFromLabelPosition(myPosition); if (switchBlock == null) return; @@ -732,7 +733,7 @@ public class JavaKeywordCompletion { if (SUPER_OR_THIS_PATTERN.accepts(myPosition)) { final boolean afterDot = AFTER_DOT.accepts(myPosition); final boolean insideQualifierClass = isInsideQualifierClass(); - final boolean insideInheritorClass = HighlightingFeature.EXTENSION_METHODS.isAvailable(myPosition) && isInsideInheritorClass(); + final boolean insideInheritorClass = JavaLanguageFeature.EXTENSION_METHODS.isAvailable(myPosition) && isInsideInheritorClass(); if (!afterDot || insideQualifierClass || insideInheritorClass) { if (!afterDot || insideQualifierClass) { addKeyword(createKeyword(PsiKeyword.THIS)); @@ -771,7 +772,7 @@ public class JavaKeywordCompletion { if (PsiTreeUtil.getParentOfType(myPosition, PsiAnnotation.class) == null) { if (!statementPosition) { addKeyword(TailTypeDecorator.withTail(createKeyword(PsiKeyword.NEW), TailTypes.insertSpaceType())); - if (HighlightingFeature.ENHANCED_SWITCH.isAvailable(myPosition)) { + if (JavaLanguageFeature.ENHANCED_SWITCH.isAvailable(myPosition)) { addKeyword(new OverridableSpace(createKeyword(PsiKeyword.SWITCH), JavaTailTypes.SWITCH_LPARENTH)); } } @@ -827,7 +828,7 @@ public class JavaKeywordCompletion { } } - if (HighlightingFeature.STATIC_IMPORTS.isAvailable(file) && myPrevLeaf != null && myPrevLeaf.textMatches(PsiKeyword.IMPORT)) { + if (JavaLanguageFeature.STATIC_IMPORTS.isAvailable(file) && myPrevLeaf != null && myPrevLeaf.textMatches(PsiKeyword.IMPORT)) { addKeyword(new OverridableSpace(createKeyword(PsiKeyword.STATIC), TailTypes.humbleSpaceBeforeWordType())); } } @@ -878,13 +879,13 @@ public class JavaKeywordCompletion { if (psiElement().insideStarting(psiElement(PsiLocalVariable.class, PsiExpressionStatement.class)).accepts(myPosition)) { addKeyword(new OverridableSpace(createKeyword(PsiKeyword.CLASS), TailTypes.humbleSpaceBeforeWordType())); addKeyword(new OverridableSpace(LookupElementBuilder.create("abstract class").bold(), TailTypes.humbleSpaceBeforeWordType())); - if (HighlightingFeature.RECORDS.isAvailable(myPosition)) { + if (JavaLanguageFeature.RECORDS.isAvailable(myPosition)) { addKeyword(new OverridableSpace(createKeyword(PsiKeyword.RECORD), TailTypes.humbleSpaceBeforeWordType())); } - if (HighlightingFeature.LOCAL_ENUMS.isAvailable(myPosition)) { + if (JavaLanguageFeature.LOCAL_ENUMS.isAvailable(myPosition)) { addKeyword(new OverridableSpace(createKeyword(PsiKeyword.ENUM), TailTypes.humbleSpaceBeforeWordType())); } - if (HighlightingFeature.LOCAL_INTERFACES.isAvailable(myPosition)) { + if (JavaLanguageFeature.LOCAL_INTERFACES.isAvailable(myPosition)) { addKeyword(new OverridableSpace(createKeyword(PsiKeyword.INTERFACE), TailTypes.humbleSpaceBeforeWordType())); } } @@ -893,7 +894,7 @@ public class JavaKeywordCompletion { List keywords = new ArrayList<>(); keywords.add(PsiKeyword.CLASS); keywords.add(PsiKeyword.INTERFACE); - if (HighlightingFeature.RECORDS.isAvailable(myPosition)) { + if (JavaLanguageFeature.RECORDS.isAvailable(myPosition)) { keywords.add(PsiKeyword.RECORD); } if (PsiUtil.isLanguageLevel5OrHigher(myPosition)) { @@ -1039,7 +1040,7 @@ public class JavaKeywordCompletion { if (psiClass != null) { if (!psiClass.isEnum() && !psiClass.isRecord()) { addKeyword(new OverridableSpace(createKeyword(PsiKeyword.EXTENDS), TailTypes.humbleSpaceBeforeWordType())); - if (HighlightingFeature.SEALED_CLASSES.isAvailable(psiClass)) { + if (JavaLanguageFeature.SEALED_CLASSES.isAvailable(psiClass)) { PsiModifierList modifiers = psiClass.getModifierList(); if (myParameters.getInvocationCount() > 1 || (modifiers != null && @@ -1276,7 +1277,7 @@ public class JavaKeywordCompletion { addKeyword(br); } else if (psiElement().inside(PsiSwitchExpression.class).accepts(myPosition) && - HighlightingFeature.SWITCH_EXPRESSION.isAvailable(myPosition)) { + JavaLanguageFeature.SWITCH_EXPRESSION.isAvailable(myPosition)) { addKeyword(TailTypeDecorator.withTail(createKeyword(PsiKeyword.YIELD), TailTypes.insertSpaceType())); } diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaPatternCompletionUtil.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaPatternCompletionUtil.java index e1fae64e846f..fd170729de86 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaPatternCompletionUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaPatternCompletionUtil.java @@ -7,6 +7,7 @@ import com.intellij.codeInsight.lookup.LookupElementPresentation; import com.intellij.codeInsight.lookup.LookupItem; import com.intellij.openapi.editor.Document; import com.intellij.openapi.util.TextRange; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.util.PsiFormatUtil; @@ -26,7 +27,7 @@ public final class JavaPatternCompletionUtil { * @return true if patterns should be suggested here */ public static boolean isPatternContext(@NotNull PsiFile psiFile, @NotNull PsiElement element) { - if (!HighlightingFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(psiFile)) return false; + if (!JavaLanguageFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(psiFile)) return false; if (!(element instanceof PsiIdentifier)) return false; PsiElement parent = element.getParent(); if (!(parent instanceof PsiJavaCodeReferenceElement)) return false; diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/ModifierChooser.java b/java/java-impl/src/com/intellij/codeInsight/completion/ModifierChooser.java index 621066ad2f40..628fe0b807ad 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/ModifierChooser.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/ModifierChooser.java @@ -2,6 +2,7 @@ package com.intellij.codeInsight.completion; import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.filters.FilterPositionUtil; import com.intellij.psi.impl.source.jsp.jspJava.JspClassLevelDeclarationStatement; @@ -95,7 +96,7 @@ public final class ModifierChooser { } public static String[] addClassModifiers(PsiModifierList list, @NotNull PsiElement scope) { - if (HighlightingFeature.SEALED_CLASSES.isAvailable(scope)) { + if (JavaLanguageFeature.SEALED_CLASSES.isAvailable(scope)) { if (list == null) { return CLASS_MODIFIERS_WITH_SEALED.clone(); } @@ -136,7 +137,7 @@ public final class ModifierChooser { } private static String[][] getInterfaceMemberModifiers(@NotNull PsiElement list) { - if (HighlightingFeature.SEALED_CLASSES.isAvailable(list)) { + if (JavaLanguageFeature.SEALED_CLASSES.isAvailable(list)) { return INTERFACE_MEMBER_MODIFIERS_WITH_SEALED; } if (PsiUtil.isLanguageLevel9OrHigher(list)) { @@ -149,7 +150,7 @@ public final class ModifierChooser { } private static String[][] getClassMemberModifiers(@NotNull PsiElement list) { - if (HighlightingFeature.SEALED_CLASSES.isAvailable(list)) { + if (JavaLanguageFeature.SEALED_CLASSES.isAvailable(list)) { return CLASS_MEMBER_MODIFIERS_WITH_SEALED; } return CLASS_MEMBER_MODIFIERS; diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java b/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java index c8af3d8eb683..2cf9277006db 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java @@ -34,7 +34,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; -import static com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature.PATTERNS_IN_SWITCH; +import static com.intellij.codeInsight.daemon.impl.analysis.com.intellij.pom.java.JavaLanguageFeature.PATTERNS_IN_SWITCH; public final class JavaCompletionProcessor implements PsiScopeProcessor, ElementClassHint { private static final Logger LOG = Logger.getInstance(JavaCompletionProcessor.class); diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/SealedClassUnresolvedReferenceFixProvider.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/SealedClassUnresolvedReferenceFixProvider.java index 4dee2665f0cd..a03170f787b2 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/SealedClassUnresolvedReferenceFixProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/SealedClassUnresolvedReferenceFixProvider.java @@ -19,7 +19,7 @@ import static com.intellij.codeInsight.daemon.impl.analysis.HighlightUtil.regist public final class SealedClassUnresolvedReferenceFixProvider extends UnresolvedReferenceQuickFixProvider { @Override public void registerFixes(@NotNull PsiJavaCodeReferenceElement ref, @NotNull QuickFixActionRegistrar registrar) { - if (!HighlightingFeature.SEALED_CLASSES.isAvailable(ref) && ref.textMatches(PsiKeyword.SEALED)) { + if (!JavaLanguageFeature.SEALED_CLASSES.isAvailable(ref) && ref.textMatches(PsiKeyword.SEALED)) { ArrayList intentions = new ArrayList<>(); registerIncreaseLanguageLevelFixes(ref, JavaLanguageFeature.SEALED_CLASSES, intentions); for (IntentionAction intention : intentions) { diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/DefaultQuickFixProvider.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/DefaultQuickFixProvider.java index 19250ef8d325..e09f5c9687aa 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/DefaultQuickFixProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/DefaultQuickFixProvider.java @@ -10,6 +10,7 @@ import com.intellij.codeInsight.quickfix.UnresolvedReferenceQuickFixProvider; import com.intellij.lang.java.request.CreateFieldFromUsage; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.codeStyle.VariableKind; @@ -107,7 +108,7 @@ public class DefaultQuickFixProvider extends UnresolvedReferenceQuickFixProvider result.add(new CreateClassFromUsageFix(ref, CreateClassKind.ENUM)); result.add(new CreateClassFromUsageFix(ref, CreateClassKind.ANNOTATION)); } - if (HighlightingFeature.RECORDS.isAvailable(ref)) { + if (JavaLanguageFeature.RECORDS.isAvailable(ref)) { if (isNewExpression) { result.add(new CreateRecordFromNewFix((PsiNewExpression)parent)); } @@ -118,7 +119,7 @@ public class DefaultQuickFixProvider extends UnresolvedReferenceQuickFixProvider if (isNewExpression) { result.add(new CreateInnerClassFromNewFix((PsiNewExpression)parent)); - if (HighlightingFeature.RECORDS.isAvailable(ref) && ((PsiNewExpression)parent).getQualifier() == null) { + if (JavaLanguageFeature.RECORDS.isAvailable(ref) && ((PsiNewExpression)parent).getQualifier() == null) { result.add(new CreateInnerRecordFromNewFix((PsiNewExpression)parent)); } } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RenameToIgnoredFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RenameToIgnoredFix.java index ba86112748c4..9ed1dcdac95e 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RenameToIgnoredFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RenameToIgnoredFix.java @@ -17,6 +17,7 @@ package com.intellij.codeInsight.daemon.impl.quickfix; import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.util.PsiUtil; @@ -55,7 +56,7 @@ public class RenameToIgnoredFix extends RenameElementFix { } private static boolean canBeUnnamed(PsiVariable variable) { - if (!HighlightingFeature.UNNAMED_PATTERNS_AND_VARIABLES.isAvailable(variable)) return false; + if (!JavaLanguageFeature.UNNAMED_PATTERNS_AND_VARIABLES.isAvailable(variable)) return false; if (variable instanceof PsiPatternVariable || variable instanceof PsiResourceVariable) return true; if (variable instanceof PsiLocalVariable) { return variable.getParent() instanceof PsiDeclarationStatement decl && decl.getParent() instanceof PsiCodeBlock; diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ReplaceWithTypePatternFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ReplaceWithTypePatternFix.java index 81d13d7a7263..ddd355cf4e26 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ReplaceWithTypePatternFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ReplaceWithTypePatternFix.java @@ -9,6 +9,7 @@ import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.Presentation; import com.intellij.modcommand.PsiUpdateModCommandAction; import com.intellij.openapi.util.NlsSafe; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -28,7 +29,7 @@ public class ReplaceWithTypePatternFix extends PsiUpdateModCommandAction() diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/SealClassAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/SealClassAction.java index bc734246bdad..21bcae23253a 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/SealClassAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/SealClassAction.java @@ -11,6 +11,7 @@ import com.intellij.modcommand.Presentation; import com.intellij.modcommand.PsiUpdateModCommandAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Ref; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.search.searches.ClassInheritorsSearch; import com.intellij.psi.search.searches.FunctionalExpressionSearch; @@ -42,7 +43,7 @@ public final class SealClassAction extends PsiUpdateModCommandAction { } private static boolean isAvailable(@NotNull ActionContext context, @NotNull PsiClass aClass) { - if (!HighlightingFeature.SEALED_CLASSES.isAvailable(aClass)) return false; + if (!JavaLanguageFeature.SEALED_CLASSES.isAvailable(aClass)) return false; int offset = context.offset(); PsiElement lBrace = aClass.getLBrace(); if (lBrace == null) return false; diff --git a/java/java-impl/src/com/intellij/codeInsight/lookup/PsiTypeLookupItem.java b/java/java-impl/src/com/intellij/codeInsight/lookup/PsiTypeLookupItem.java index 0976770c08f7..e37e23286fac 100644 --- a/java/java-impl/src/com/intellij/codeInsight/lookup/PsiTypeLookupItem.java +++ b/java/java-impl/src/com/intellij/codeInsight/lookup/PsiTypeLookupItem.java @@ -13,6 +13,7 @@ import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.ClassConditionKey; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.impl.source.PsiClassReferenceType; import com.intellij.psi.util.PsiFormatUtil; @@ -349,7 +350,7 @@ public final class PsiTypeLookupItem extends LookupItem implements Typed } // jigsaw module - if (HighlightingFeature.MODULES.isAvailable(file)) { + if (JavaLanguageFeature.MODULES.isAvailable(file)) { final PsiJavaModule currentModule = JavaModuleGraphUtil.findDescriptorByElement(file); if (currentModule != null) { final PsiJavaModule targetModule = JavaModuleGraphUtil.findDescriptorByElement(aClass); diff --git a/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/SwitchStatementPostfixTemplate.java b/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/SwitchStatementPostfixTemplate.java index 3077c65c5006..1e29d1dfdb0b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/SwitchStatementPostfixTemplate.java +++ b/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/SwitchStatementPostfixTemplate.java @@ -14,6 +14,7 @@ import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.TextRange; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; @@ -38,7 +39,7 @@ public class SwitchStatementPostfixTemplate extends SurroundPostfixTemplateBase if (type == null) return false; if (PsiTypes.intType().isAssignableFrom(type)) return true; if (type instanceof PsiClassType classType) { - if (HighlightingFeature.PATTERNS_IN_SWITCH.isAvailable(expression)) return true; + if (JavaLanguageFeature.PATTERNS_IN_SWITCH.isAvailable(expression)) return true; final PsiClass psiClass = classType.resolve(); if (psiClass != null && psiClass.isEnum()) return true; @@ -76,7 +77,7 @@ public class SwitchStatementPostfixTemplate extends SurroundPostfixTemplateBase PsiSwitchStatement switchStatement = (PsiSwitchStatement)factory.createStatementFromText("switch(1){case 1:}", null); return postprocessSwitch(editor, expr, codeStyleManager, parent, switchStatement); } - else if (HighlightingFeature.ENHANCED_SWITCH.isAvailable(expr)) { + else if (JavaLanguageFeature.ENHANCED_SWITCH.isAvailable(expr)) { PsiSwitchExpression switchExpression = (PsiSwitchExpression)factory.createExpressionFromText("switch(1){case 1->1;}", null); return postprocessSwitch(editor, expr, codeStyleManager, expr, switchExpression); } @@ -122,7 +123,7 @@ public class SwitchStatementPostfixTemplate extends SurroundPostfixTemplateBase return new PostfixTemplateExpressionSelectorBase(additionalFilter) { @Override protected List getNonFilteredExpressions(@NotNull PsiElement context, @NotNull Document document, int offset) { - boolean isEnhancedSwitchAvailable = HighlightingFeature.ENHANCED_SWITCH.isAvailable(context); + boolean isEnhancedSwitchAvailable = JavaLanguageFeature.ENHANCED_SWITCH.isAvailable(context); List result = new ArrayList<>(); for (PsiElement element = PsiTreeUtil.getNonStrictParentOfType(context, PsiExpression.class, PsiStatement.class); diff --git a/java/java-impl/src/com/intellij/codeInspection/ConvertRecordToClassFix.java b/java/java-impl/src/com/intellij/codeInspection/ConvertRecordToClassFix.java index b97cb8144454..b693a56c75f7 100644 --- a/java/java-impl/src/com/intellij/codeInspection/ConvertRecordToClassFix.java +++ b/java/java-impl/src/com/intellij/codeInspection/ConvertRecordToClassFix.java @@ -16,6 +16,7 @@ import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.Presentation; import com.intellij.modcommand.PsiUpdateModCommandAction; import com.intellij.openapi.project.Project; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; @@ -326,9 +327,9 @@ public class ConvertRecordToClassFix extends PsiUpdateModCommandAction Boolean): ErrorWithFixes? { val originalTargetFile = targetFile?.originalFile val useFile = place.containingFile?.originalFile ?: return null - if (!HighlightingFeature.MODULES.isAvailable(useFile)) return null + if (!JavaLanguageFeature.MODULES.isAvailable(useFile)) return null val useVFile = useFile.virtualFile val index = ProjectFileIndex.getInstance(useFile.project) diff --git a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java index 361265e46279..872b39c90765 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java @@ -15,6 +15,7 @@ import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.NlsSafe; import com.intellij.openapi.util.Predicates; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.codeStyle.JavaCodeStyleSettings; @@ -129,7 +130,7 @@ public final class ImportHelper{ classesToUseSingle.addAll(toReimport); try { - boolean stringTemplates = HighlightingFeature.STRING_TEMPLATES.isAvailable(file); + boolean stringTemplates = JavaLanguageFeature.STRING_TEMPLATES.isAvailable(file); StringBuilder text = buildImportListText(resultList, classesOrPackagesToImportOnDemand.keySet(), classesToUseSingle, stringTemplates); for (PsiElement nonImport : nonImports) { text.append("\n").append(nonImport.getText()); diff --git a/java/java-impl/src/com/siyeh/ig/classlayout/ClassInitializerInspection.java b/java/java-impl/src/com/siyeh/ig/classlayout/ClassInitializerInspection.java index 75a58d35a63f..4115ef66a6ae 100644 --- a/java/java-impl/src/com/siyeh/ig/classlayout/ClassInitializerInspection.java +++ b/java/java-impl/src/com/siyeh/ig/classlayout/ClassInitializerInspection.java @@ -23,6 +23,7 @@ import com.intellij.codeInspection.options.OptPane; import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.project.Project; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiUtil; import com.intellij.util.containers.ContainerUtil; @@ -68,7 +69,7 @@ public final class ClassInitializerInspection extends BaseInspection { PsiClassInitializer classInitializer = (PsiClassInitializer)infos[0]; final PsiClass aClass = classInitializer.getContainingClass(); assert aClass != null; - if (PsiUtil.isInnerClass(aClass) && !HighlightingFeature.INNER_STATICS.isAvailable(aClass) || + if (PsiUtil.isInnerClass(aClass) && !JavaLanguageFeature.INNER_STATICS.isAvailable(aClass) || ClassInitializerMayBeStaticInspection.dependsOnInstanceMembers(classInitializer)) { return new LocalQuickFix[] {new MoveToConstructorFix()}; } diff --git a/java/java-impl/src/com/siyeh/ig/controlflow/UnnecessaryDefaultInspection.java b/java/java-impl/src/com/siyeh/ig/controlflow/UnnecessaryDefaultInspection.java index b3e59f592033..e1cb8a2490dd 100644 --- a/java/java-impl/src/com/siyeh/ig/controlflow/UnnecessaryDefaultInspection.java +++ b/java/java-impl/src/com/siyeh/ig/controlflow/UnnecessaryDefaultInspection.java @@ -25,6 +25,7 @@ import com.intellij.codeInspection.options.OptPane; import com.intellij.modcommand.ActionContext; import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandAction; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.controlFlow.*; import com.intellij.psi.util.PsiTreeUtil; @@ -95,7 +96,7 @@ public final class UnnecessaryDefaultInspection extends BaseInspection { @Override public boolean shouldInspect(@NotNull PsiFile file) { - return !onlyReportSwitchExpressions || HighlightingFeature.ENHANCED_SWITCH.isAvailable(file); + return !onlyReportSwitchExpressions || JavaLanguageFeature.ENHANCED_SWITCH.isAvailable(file); } @Override diff --git a/java/java-impl/src/com/siyeh/ig/dataflow/CreateNullBranchFix.java b/java/java-impl/src/com/siyeh/ig/dataflow/CreateNullBranchFix.java index fd42e07b6fcf..f2047a11b821 100644 --- a/java/java-impl/src/com/siyeh/ig/dataflow/CreateNullBranchFix.java +++ b/java/java-impl/src/com/siyeh/ig/dataflow/CreateNullBranchFix.java @@ -4,6 +4,7 @@ package com.siyeh.ig.dataflow; import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature; import com.intellij.modcommand.ActionContext; import com.intellij.modcommand.ModPsiUpdater; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.TypeConversionUtil; @@ -36,7 +37,7 @@ public final class CreateNullBranchFix extends BaseSwitchFix { @Override protected void invoke(@NotNull ActionContext context, @NotNull PsiSwitchBlock switchBlock, @NotNull ModPsiUpdater updater) { - if (!HighlightingFeature.PATTERNS_IN_SWITCH.isAvailable(switchBlock)) return; + if (!JavaLanguageFeature.PATTERNS_IN_SWITCH.isAvailable(switchBlock)) return; PsiCodeBlock body = switchBlock.getBody(); if (body == null) return; PsiExpression selector = switchBlock.getExpression(); diff --git a/java/java-impl/src/com/siyeh/ig/memory/InnerClassMayBeStaticInspection.java b/java/java-impl/src/com/siyeh/ig/memory/InnerClassMayBeStaticInspection.java index 18ea61ae354f..4f7b6b888d72 100644 --- a/java/java-impl/src/com/siyeh/ig/memory/InnerClassMayBeStaticInspection.java +++ b/java/java-impl/src/com/siyeh/ig/memory/InnerClassMayBeStaticInspection.java @@ -24,6 +24,7 @@ import com.intellij.codeInspection.options.OptPane; import com.intellij.codeInspection.util.SpecialAnnotationsUtilBase; import com.intellij.modcommand.*; import com.intellij.openapi.project.Project; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.search.searches.ReferencesSearch; @@ -175,7 +176,7 @@ public final class InnerClassMayBeStaticInspection extends BaseInspection { public void visitClass(@NotNull PsiClass aClass) { if (aClass.getContainingClass() != null && !aClass.hasModifierProperty(PsiModifier.STATIC) || PsiUtil.isLocalOrAnonymousClass(aClass)) { - if (!HighlightingFeature.INNER_STATICS.isAvailable(aClass)) { + if (!JavaLanguageFeature.INNER_STATICS.isAvailable(aClass)) { return; } } diff --git a/java/java-impl/src/com/siyeh/ig/migration/IfCanBeSwitchInspection.java b/java/java-impl/src/com/siyeh/ig/migration/IfCanBeSwitchInspection.java index a70e27c9f379..e47ca998ac0b 100644 --- a/java/java-impl/src/com/siyeh/ig/migration/IfCanBeSwitchInspection.java +++ b/java/java-impl/src/com/siyeh/ig/migration/IfCanBeSwitchInspection.java @@ -15,6 +15,7 @@ import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.WriteExternalException; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.codeStyle.VariableKind; @@ -109,7 +110,7 @@ public final class IfCanBeSwitchInspection extends BaseInspection { return; } ifStatement = concatenateIfStatements(ifStatement); - if (HighlightingFeature.PATTERNS_IN_SWITCH.isAvailable(ifStatement)) { + if (JavaLanguageFeature.PATTERNS_IN_SWITCH.isAvailable(ifStatement)) { for (PsiIfStatement ifStatementInChain : getAllConditionalBranches(ifStatement)) { replaceCastsWithPatternVariable(ifStatementInChain); } @@ -319,7 +320,7 @@ public final class IfCanBeSwitchInspection extends BaseInspection { branches.add(new IfStatementBranch(new PsiEmptyStatementImpl(), true)); } } - if (HighlightingFeature.PATTERNS_IN_SWITCH.isAvailable(switchExpression)){ + if (JavaLanguageFeature.PATTERNS_IN_SWITCH.isAvailable(switchExpression)){ if (getNullability(switchExpression) != Nullability.NOT_NULL && findNullCheckedOperand(statementToReplace) == null) { final IfStatementBranch defaultBranch = ContainerUtil.find(branches, (branch) -> branch.isElse()); final PsiElementFactory factory = PsiElementFactory.getInstance(ifStatement.getProject()); @@ -349,7 +350,7 @@ public final class IfCanBeSwitchInspection extends BaseInspection { final PsiStatement newStatement = factory.createStatementFromText(switchStatementText.toString(), ifStatement); final PsiSwitchStatement replacement = (PsiSwitchStatement)statementToReplace.replace(newStatement); updater.moveCaretTo(replacement); - if (HighlightingFeature.ENHANCED_SWITCH.isAvailable(replacement)) { + if (JavaLanguageFeature.ENHANCED_SWITCH.isAvailable(replacement)) { final EnhancedSwitchMigrationInspection.SwitchReplacer replacer = EnhancedSwitchMigrationInspection.findSwitchReplacer(replacement); if (replacer != null) { replacer.replace(replacement); @@ -674,7 +675,7 @@ public final class IfCanBeSwitchInspection extends BaseInspection { return false; } Nullability nullability = getNullability(switchExpression); - if (HighlightingFeature.PATTERNS_IN_SWITCH.isAvailable(switchExpression) && !ClassUtils.isPrimitive(switchExpression.getType())) { + if (JavaLanguageFeature.PATTERNS_IN_SWITCH.isAvailable(switchExpression) && !ClassUtils.isPrimitive(switchExpression.getType())) { if (hasDefaultElse(ifStatement) || findNullCheckedOperand(ifStatement) != null || hasUnconditionalPatternCheck(ifStatement, switchExpression)) { nullability = Nullability.NOT_NULL; } diff --git a/java/java-impl/src/com/siyeh/ig/performance/FieldMayBeStaticInspection.java b/java/java-impl/src/com/siyeh/ig/performance/FieldMayBeStaticInspection.java index 0e5a5b468e32..f6b64846c9d9 100644 --- a/java/java-impl/src/com/siyeh/ig/performance/FieldMayBeStaticInspection.java +++ b/java/java-impl/src/com/siyeh/ig/performance/FieldMayBeStaticInspection.java @@ -23,6 +23,7 @@ import com.intellij.codeInspection.LocalQuickFix; import com.intellij.codeInspection.dataFlow.CommonDataflow; import com.intellij.codeInspection.dataFlow.Mutability; import com.intellij.codeInspection.options.OptPane; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiUtil; import com.siyeh.InspectionGadgetsBundle; @@ -89,7 +90,7 @@ public final class FieldMayBeStaticInspection extends BaseInspection { if (containingClass != null && !containingClass.hasModifierProperty(PsiModifier.STATIC) && containingClass.getContainingClass() != null - && !HighlightingFeature.INNER_STATICS.isAvailable(containingClass) + && !JavaLanguageFeature.INNER_STATICS.isAvailable(containingClass) && !PsiUtil.isCompileTimeConstant(field)) { // inner class cannot have static declarations in earlier Java versions return; @@ -97,8 +98,8 @@ public final class FieldMayBeStaticInspection extends BaseInspection { if (UnusedSymbolUtil.isImplicitWrite(field)) { return; } - if (containingClass instanceof PsiAnonymousClass && - !HighlightingFeature.INNER_STATICS.isAvailable(containingClass) && + if (containingClass instanceof PsiAnonymousClass && + !JavaLanguageFeature.INNER_STATICS.isAvailable(containingClass) && !PsiUtil.isCompileTimeConstant(field)) { return; } diff --git a/java/java-impl/src/com/siyeh/ig/performance/MethodMayBeStaticInspection.java b/java/java-impl/src/com/siyeh/ig/performance/MethodMayBeStaticInspection.java index a41c9e97162b..ea60bf963ba5 100644 --- a/java/java-impl/src/com/siyeh/ig/performance/MethodMayBeStaticInspection.java +++ b/java/java-impl/src/com/siyeh/ig/performance/MethodMayBeStaticInspection.java @@ -23,6 +23,7 @@ import com.intellij.codeInspection.options.OptPane; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.WriteExternalException; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.impl.FindSuperElementsHelper; import com.intellij.psi.util.PsiTreeUtil; @@ -153,7 +154,7 @@ public final class MethodMayBeStaticInspection extends BaseInspection { } final PsiElement scope = containingClass.getScope(); if (!(scope instanceof PsiJavaFile) && !containingClass.hasModifierProperty(PsiModifier.STATIC) && !containingClass.isInterface() && - !HighlightingFeature.INNER_STATICS.isAvailable(scope)) { + !JavaLanguageFeature.INNER_STATICS.isAvailable(scope)) { return; } if (m_onlyPrivateOrFinal && !method.hasModifierProperty(PsiModifier.FINAL) && !method.hasModifierProperty(PsiModifier.PRIVATE)) { diff --git a/java/java-impl/src/com/siyeh/ig/redundancy/RedundantEmbeddedExpressionInspection.java b/java/java-impl/src/com/siyeh/ig/redundancy/RedundantEmbeddedExpressionInspection.java index 9a33c5b7059f..263cd8ca077e 100644 --- a/java/java-impl/src/com/siyeh/ig/redundancy/RedundantEmbeddedExpressionInspection.java +++ b/java/java-impl/src/com/siyeh/ig/redundancy/RedundantEmbeddedExpressionInspection.java @@ -10,6 +10,7 @@ import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.PsiUpdateModCommandAction; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.impl.source.tree.java.PsiEmptyExpressionImpl; import com.intellij.psi.util.JavaPsiStringTemplateUtil; @@ -26,7 +27,7 @@ import java.util.Objects; public final class RedundantEmbeddedExpressionInspection extends AbstractBaseJavaLocalInspectionTool implements CleanupLocalInspectionTool { @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!HighlightingFeature.STRING_TEMPLATES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!JavaLanguageFeature.STRING_TEMPLATES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; return new JavaElementVisitor() { @Override public void visitTemplateExpression(@NotNull PsiTemplateExpression expression) { diff --git a/java/java-impl/src/com/siyeh/ig/redundancy/RedundantStringOperationInspection.java b/java/java-impl/src/com/siyeh/ig/redundancy/RedundantStringOperationInspection.java index 9342acda30b4..6f0ddd0aed56 100644 --- a/java/java-impl/src/com/siyeh/ig/redundancy/RedundantStringOperationInspection.java +++ b/java/java-impl/src/com/siyeh/ig/redundancy/RedundantStringOperationInspection.java @@ -15,6 +15,7 @@ import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.util.PsiLiteralUtil; @@ -152,7 +153,7 @@ public final class RedundantStringOperationInspection extends AbstractBaseJavaLo @Override public void visitTemplateExpression(@NotNull PsiTemplateExpression element) { - if (!HighlightingFeature.STRING_TEMPLATES.isAvailable(element) || element.getLiteralExpression() == null) { + if (!JavaLanguageFeature.STRING_TEMPLATES.isAvailable(element) || element.getLiteralExpression() == null) { return; } PsiExpression processor = element.getProcessor(); diff --git a/java/java-impl/src/com/siyeh/ipp/concatenation/ReplaceConcatenationWithFormatStringIntention.java b/java/java-impl/src/com/siyeh/ipp/concatenation/ReplaceConcatenationWithFormatStringIntention.java index 96ee02c035f5..b1c0048fa0db 100644 --- a/java/java-impl/src/com/siyeh/ipp/concatenation/ReplaceConcatenationWithFormatStringIntention.java +++ b/java/java-impl/src/com/siyeh/ipp/concatenation/ReplaceConcatenationWithFormatStringIntention.java @@ -3,6 +3,7 @@ package com.siyeh.ipp.concatenation; import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiConcatenationUtil; import com.intellij.psi.util.PsiLiteralUtil; @@ -53,7 +54,7 @@ public final class ReplaceConcatenationWithFormatStringIntention extends MCInten } CommentTracker commentTracker = new CommentTracker(); final StringBuilder newExpression = new StringBuilder(); - if (HighlightingFeature.TEXT_BLOCKS.isAvailable(element)) { + if (JavaLanguageFeature.TEXT_BLOCKS.isAvailable(element)) { appendFormatString(expression, formatString, false, newExpression); newExpression.append(".formatted("); } else { @@ -70,7 +71,7 @@ public final class ReplaceConcatenationWithFormatStringIntention extends MCInten @Override protected String getTextForElement(@NotNull PsiElement element) { - return IntentionPowerPackBundle.message(HighlightingFeature.TEXT_BLOCKS.isAvailable(element) + return IntentionPowerPackBundle.message(JavaLanguageFeature.TEXT_BLOCKS.isAvailable(element) ? "replace.concatenation.with.format.string.intention.name.formatted" : "replace.concatenation.with.format.string.intention.name"); } diff --git a/java/java-impl/src/com/siyeh/ipp/switchbranches/CreateMissingSwitchBranchesAction.java b/java/java-impl/src/com/siyeh/ipp/switchbranches/CreateMissingSwitchBranchesAction.java index 9ee9981f6f2d..cedd6fe322e8 100644 --- a/java/java-impl/src/com/siyeh/ipp/switchbranches/CreateMissingSwitchBranchesAction.java +++ b/java/java-impl/src/com/siyeh/ipp/switchbranches/CreateMissingSwitchBranchesAction.java @@ -11,6 +11,7 @@ import com.intellij.modcommand.ModPsiUpdater; import com.intellij.modcommand.Presentation; import com.intellij.modcommand.PsiUpdateModCommandAction; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; @@ -39,7 +40,7 @@ public final class CreateMissingSwitchBranchesAction extends PsiUpdateModCommand @Override protected void invoke(@NotNull ActionContext context, @NotNull PsiSwitchBlock block, @NotNull ModPsiUpdater updater) { - if (block instanceof PsiSwitchExpression && !HighlightingFeature.SWITCH_EXPRESSION.isAvailable(block)) { + if (block instanceof PsiSwitchExpression && !JavaLanguageFeature.SWITCH_EXPRESSION.isAvailable(block)) { // Do not suggest if switch expression is not supported as we may generate unparseable code with 'yield' statement return; } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/convertToJava/ExpressionGenerator.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/convertToJava/ExpressionGenerator.java index c35189002414..3037ccce8565 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/convertToJava/ExpressionGenerator.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/convertToJava/ExpressionGenerator.java @@ -6,6 +6,7 @@ import com.intellij.lang.ASTNode; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.impl.light.LightElement; import com.intellij.psi.tree.IElementType; @@ -870,7 +871,7 @@ public class ExpressionGenerator extends Generator { final String text = literal.getText(); final String value = GrStringUtil.unescapeString(GrStringUtil.removeQuotes(text)); if (text.startsWith("'''") || text.startsWith("\"\"\"")) { - if (HighlightingFeature.TEXT_BLOCKS.isAvailable(literal)) { + if (JavaLanguageFeature.TEXT_BLOCKS.isAvailable(literal)) { builder .append("\"\"\"\n") .append(PsiLiteralUtil.escapeTextBlockCharacters(StringUtil.escapeStringCharacters(value))) diff --git a/plugins/kotlin/inspections-fe10/src/org/jetbrains/kotlin/idea/quickfix/KotlinAddRequiredModuleFix.kt b/plugins/kotlin/inspections-fe10/src/org/jetbrains/kotlin/idea/quickfix/KotlinAddRequiredModuleFix.kt index 4a671a0f01d3..d88eef077e36 100644 --- a/plugins/kotlin/inspections-fe10/src/org/jetbrains/kotlin/idea/quickfix/KotlinAddRequiredModuleFix.kt +++ b/plugins/kotlin/inspections-fe10/src/org/jetbrains/kotlin/idea/quickfix/KotlinAddRequiredModuleFix.kt @@ -8,6 +8,7 @@ import com.intellij.codeInsight.intention.IntentionAction import com.intellij.codeInspection.LocalQuickFixAndIntentionActionOnPsiElement import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project +import com.intellij.pom.java.JavaLanguageFeature import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile import com.intellij.psi.PsiJavaModule @@ -26,7 +27,7 @@ class KotlinAddRequiredModuleFix(module: PsiJavaModule, private val requiredName override fun startInWriteAction() = true override fun isAvailable(project: Project, file: PsiFile, startElement: PsiElement, endElement: PsiElement): Boolean { - return HighlightingFeature.MODULES.isAvailable(file) && + return JavaLanguageFeature.MODULES.isAvailable(file) && startElement is PsiJavaModule && startElement.getManager().isInProject(startElement) } diff --git a/plugins/lombok/src/main/java/de/plushnikov/intellij/plugin/intention/valvar/to/AbstractReplaceExplicitTypeWithVariableIntentionAction.java b/plugins/lombok/src/main/java/de/plushnikov/intellij/plugin/intention/valvar/to/AbstractReplaceExplicitTypeWithVariableIntentionAction.java index 4ecc0d1e603e..6b82999c92f5 100644 --- a/plugins/lombok/src/main/java/de/plushnikov/intellij/plugin/intention/valvar/to/AbstractReplaceExplicitTypeWithVariableIntentionAction.java +++ b/plugins/lombok/src/main/java/de/plushnikov/intellij/plugin/intention/valvar/to/AbstractReplaceExplicitTypeWithVariableIntentionAction.java @@ -4,6 +4,7 @@ import com.intellij.codeInsight.daemon.impl.analysis.HighlightingFeature; import com.intellij.codeInspection.RemoveRedundantTypeArgumentsUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.pom.java.JavaLanguageFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.util.PsiUtil; @@ -30,7 +31,7 @@ public abstract class AbstractReplaceExplicitTypeWithVariableIntentionAction ext @Override public boolean isAvailableOnDeclarationStatement(PsiDeclarationStatement context) { - if (HighlightingFeature.LVTI.isAvailable(context)) { + if (JavaLanguageFeature.LVTI.isAvailable(context)) { return false; } PsiElement[] declaredElements = context.getDeclaredElements();