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 9939c246397f..bd4b2be09820 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 @@ -83,7 +83,7 @@ final public class JavaServiceUtil { @Nullable PsiClass implementerClass, @Nullable PsiClass resultClass) { if (identifier == null || implementerClass == null || resultClass == null) return Collections.emptyList(); - if (!JavaFeature.MODULES.isAvailable(identifier)) return Collections.emptyList(); + if (!PsiUtil.isAvailable(JavaFeature.MODULES, identifier)) return Collections.emptyList(); String implementerClassName = implementerClass.getQualifiedName(); if (implementerClassName == null) return Collections.emptyList(); @@ -127,7 +127,7 @@ final public class JavaServiceUtil { static List> collectServiceLoaderLoadCall(@NotNull PsiIdentifier identifier, @NotNull PsiMethodCallExpression methodCall) { - if (!JavaFeature.MODULES.isAvailable(methodCall)) return Collections.emptyList(); + if (!PsiUtil.isAvailable(JavaFeature.MODULES, 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 b93fd96b77ce..feb4f3e52be1 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 @@ -24,6 +24,7 @@ import com.intellij.psi.JavaRecursiveElementWalkingVisitor; import com.intellij.psi.PsiJavaFile; import com.intellij.psi.PsiLiteralExpression; import com.intellij.psi.util.PsiLiteralUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.ui.paint.LinePainter2D; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; @@ -52,7 +53,7 @@ public class JavaTextBlockIndentPass extends TextEditorHighlightingPass { @Override public void doCollectInformation(@NotNull ProgressIndicator progress) { - if (!myEditor.getSettings().isIndentGuidesShown() || !JavaFeature.TEXT_BLOCKS.isAvailable(myFile)) { + if (!myEditor.getSettings().isIndentGuidesShown() || !PsiUtil.isAvailable(JavaFeature.TEXT_BLOCKS, myFile)) { return; } Document document = myEditor.getDocument(); diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java index 494cf1a9840e..b62826a5649e 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java @@ -1410,7 +1410,7 @@ public final class HighlightClassUtil { HighlightInfo.Builder builder = HighlightUtil.checkFeature(member, JavaFeature.IMPLICIT_CLASSES, languageLevel, psiFile); if (builder == null) return null; - if (!(member instanceof PsiClass) && !JavaFeature.IMPLICIT_CLASSES.isAvailable(member)) { + if (!(member instanceof PsiClass) && !PsiUtil.isAvailable(JavaFeature.IMPLICIT_CLASSES, member)) { boolean hasClassToRelocate = PsiTreeUtil.findChildOfType(implicitClass, PsiClass.class) != null; if (hasClassToRelocate) { MoveMembersIntoClassFix fix = new MoveMembersIntoClassFix(implicitClass); 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 156133e120ef..b3756c4982ec 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 @@ -12,6 +12,7 @@ import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.util.JavaImplicitClassUtil; import com.intellij.psi.util.PsiMethodUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -22,7 +23,7 @@ import org.jetbrains.annotations.Nullable; public final class HighlightImplicitClassUtil { static HighlightInfo.@Nullable Builder checkImplicitClassHasMainMethod(@NotNull PsiJavaFile file) { - if (!JavaFeature.IMPLICIT_CLASSES.isAvailable(file)) return null; + if (!PsiUtil.isAvailable(JavaFeature.IMPLICIT_CLASSES, file)) return null; PsiImplicitClass implicitClass = JavaImplicitClassUtil.getImplicitClassFor(file); if (implicitClass == null) return null; PsiMethod[] methods = implicitClass.getMethods(); @@ -38,7 +39,7 @@ public final class HighlightImplicitClassUtil { } static HighlightInfo.@Nullable Builder checkImplicitClassFileIsValidIdentifier(@NotNull PsiJavaFile file) { - if (!JavaFeature.IMPLICIT_CLASSES.isAvailable(file)) return null; + if (!PsiUtil.isAvailable(JavaFeature.IMPLICIT_CLASSES, file)) return null; PsiImplicitClass implicitClass = JavaImplicitClassUtil.getImplicitClassFor(file); if (implicitClass == null) return null; String name = implicitClass.getQualifiedName(); @@ -52,7 +53,7 @@ public final class HighlightImplicitClassUtil { } static HighlightInfo.@Nullable Builder checkInitializersInImplicitClass(@NotNull PsiClassInitializer initializer) { - if (initializer.getContainingClass() instanceof PsiImplicitClass && JavaFeature.IMPLICIT_CLASSES.isAvailable(initializer)) { + if (initializer.getContainingClass() instanceof PsiImplicitClass && PsiUtil.isAvailable(JavaFeature.IMPLICIT_CLASSES, initializer)) { return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR) .range(initializer) .descriptionAndTooltip(JavaErrorBundle.message("error.initializers.are.not.allowed.in.implicit.classes")) @@ -63,7 +64,7 @@ public final class HighlightImplicitClassUtil { static HighlightInfo.@Nullable Builder checkPackageNotAllowedInImplicitClass(@NotNull PsiPackageStatement statement, @NotNull PsiFile file) { - if (JavaFeature.IMPLICIT_CLASSES.isAvailable(file) && JavaImplicitClassUtil.isFileWithImplicitClass(file)) { + if (PsiUtil.isAvailable(JavaFeature.IMPLICIT_CLASSES, file) && JavaImplicitClassUtil.isFileWithImplicitClass(file)) { return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR) .range(statement) .descriptionAndTooltip(JavaErrorBundle.message("error.package.statement.not.allowed.for.implicit.class")) @@ -74,7 +75,7 @@ public final class HighlightImplicitClassUtil { @Nullable static HighlightInfo.Builder checkDuplicateClasses(@NotNull PsiJavaFile file) { - if (!JavaFeature.IMPLICIT_CLASSES.isAvailable(file)) return null; + if (!PsiUtil.isAvailable(JavaFeature.IMPLICIT_CLASSES, 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/HighlightUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java index 7a2afdf126bf..8e3d2fec39af 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -1127,7 +1127,7 @@ public final class HighlightUtil { // PsiJavaFile or JavaDummyHolder modifierOwnerParent instanceof PsiClass && (modifierOwnerParent instanceof PsiSyntheticClass || - JavaFeature.INNER_STATICS.isAvailable(modifierOwnerParent) || + PsiUtil.isAvailable(JavaFeature.INNER_STATICS, modifierOwnerParent) || ((PsiClass)modifierOwnerParent).getQualifiedName() != null || !modifierOwnerParent.isPhysical()); } @@ -1135,7 +1135,7 @@ public final class HighlightUtil { if (PsiModifier.STATIC.equals(modifier) || privateOrProtected || PsiModifier.PACKAGE_LOCAL.equals(modifier)) { isAllowed = modifierOwnerParent instanceof PsiClass && (PsiModifier.STATIC.equals(modifier) || - JavaFeature.INNER_STATICS.isAvailable(modifierOwnerParent) || + PsiUtil.isAvailable(JavaFeature.INNER_STATICS, modifierOwnerParent) || ((PsiClass)modifierOwnerParent).getQualifiedName() != null) || FileTypeUtils.isInServerPageFile(modifierOwnerParent) || // non-physical dummy holder might not have FQN @@ -3855,7 +3855,7 @@ public final class HighlightUtil { public static void registerIncreaseLanguageLevelFixes(@NotNull PsiElement element, @NotNull JavaFeature feature, @NotNull List registrar) { - if (feature.isAvailable(element)) return; + if (PsiUtil.isAvailable(feature, element)) return; if (feature.isLimited()) return; //no reason for applying it because it can be outdated LanguageLevel applicableLevel = getApplicableLevel(element.getContainingFile(), feature); registrar.add(getFixFactory().createIncreaseLanguageLevelFix(applicableLevel)); diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java index ea536fa2b4c0..e42c60bb9166 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java @@ -1429,7 +1429,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh } } - if (!hasErrorResults() && resultForIncompleteCode != null && JavaFeature.PATTERNS_IN_SWITCH.isAvailable(expression)) { + if (!hasErrorResults() && resultForIncompleteCode != null && PsiUtil.isAvailable(JavaFeature.PATTERNS_IN_SWITCH, expression)) { add(HighlightUtil.checkPatternVariableRequired(expression, resultForIncompleteCode)); } @@ -1689,7 +1689,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh @Override public void visitReturnStatement(@NotNull PsiReturnStatement statement) { super.visitStatement(statement); - if (!hasErrorResults() && JavaFeature.ENHANCED_SWITCH.isAvailable(myFile)) { + if (!hasErrorResults() && PsiUtil.isAvailable(JavaFeature.ENHANCED_SWITCH, myFile)) { add(HighlightUtil.checkReturnFromSwitchExpr(statement)); } if (!hasErrorResults()) { diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightingFeature.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightingFeature.java index 8cac11c4cda3..062dcca73148 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightingFeature.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightingFeature.java @@ -4,6 +4,7 @@ package com.intellij.codeInsight.daemon.impl.analysis; import com.intellij.pom.java.JavaFeature; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.PsiElement; +import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.NotNull; /** @@ -69,6 +70,6 @@ public enum HighlightingFeature { * @return true if this feature is available in the PsiFile the supplied element belongs to */ public boolean isAvailable(@NotNull PsiElement element) { - return myFeature.isAvailable(element); + return PsiUtil.isAvailable(myFeature, element); } } 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 102f0d0ec815..537293d40a90 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 @@ -219,7 +219,7 @@ public final class JavaModuleGraphUtil { @Nullable DependencyScope scope, boolean isExported) { if (to.equals(JAVA_BASE)) return false; - if (!JavaFeature.MODULES.isAvailable(from)) return false; + if (!PsiUtil.isAvailable(JavaFeature.MODULES, from)) return false; if (alreadyContainsRequires(from, to)) return false; PsiUtil.addModuleStatement(from, PsiKeyword.REQUIRES + " " + (isStaticModule(to, scope) ? PsiKeyword.STATIC + " " : "") + @@ -232,7 +232,7 @@ public final class JavaModuleGraphUtil { @NotNull PsiJavaModule to, @Nullable DependencyScope scope) { if (to.getName().equals(JAVA_BASE)) return false; - if (!JavaFeature.MODULES.isAvailable(from)) return false; + if (!PsiUtil.isAvailable(JavaFeature.MODULES, 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 2ce950b01049..278b0897e183 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 @@ -403,7 +403,7 @@ class PostHighlightingVisitor extends JavaElementVisitor { if (message != null) { PsiPattern pattern = variable.getPattern(); IntentionAction action = null; - if (JavaFeature.UNNAMED_PATTERNS_AND_VARIABLES.isAvailable(parameter)) { + if (PsiUtil.isAvailable(JavaFeature.UNNAMED_PATTERNS_AND_VARIABLES, parameter)) { if (pattern instanceof PsiTypeTestPattern ttPattern && pattern.getParent() instanceof PsiDeconstructionList) { PsiRecordComponent component = JavaPsiPatternUtil.getRecordComponentForPattern(pattern); PsiTypeElement checkType = ttPattern.getCheckType(); @@ -426,7 +426,7 @@ class PostHighlightingVisitor extends JavaElementVisitor { } } else if ((myUnusedSymbolInspection.checkParameterExcludingHierarchy() || - JavaFeature.UNNAMED_PATTERNS_AND_VARIABLES.isAvailable(declarationScope)) + PsiUtil.isAvailable(JavaFeature.UNNAMED_PATTERNS_AND_VARIABLES, declarationScope)) && declarationScope instanceof PsiLambdaExpression) { checkUnusedParameter(parameter, null); if (message != null) { @@ -444,7 +444,7 @@ class PostHighlightingVisitor extends JavaElementVisitor { if (!"main".equals(method.getName())) { return true; } - if (!JavaFeature.IMPLICIT_CLASSES.isAvailable(method)) { + if (!PsiUtil.isAvailable(JavaFeature.IMPLICIT_CLASSES, method)) { return true; } return false; diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/SwitchBlockHighlightingModel.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/SwitchBlockHighlightingModel.java index dbd535f4a31c..eb46adf92a8b 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/SwitchBlockHighlightingModel.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/SwitchBlockHighlightingModel.java @@ -289,7 +289,7 @@ public class SwitchBlockHighlightingModel { @Nullable private static HighlightInfo.Builder createQualifiedEnumConstantInfo(@NotNull PsiReferenceExpression expr) { - if (JavaFeature.ENUM_QUALIFIED_NAME_IN_SWITCH.isAvailable(expr)) return null; + if (PsiUtil.isAvailable(JavaFeature.ENUM_QUALIFIED_NAME_IN_SWITCH, expr)) return null; PsiElement qualifier = expr.getQualifier(); if (qualifier == null) return null; HighlightInfo.Builder result = createError(expr, JavaErrorBundle.message("qualified.enum.constant.in.switch")); @@ -798,7 +798,8 @@ public class SwitchBlockHighlightingModel { // 14.30.3 A type pattern that declares a pattern variable of a reference type U is // applicable at another reference type T if T is checkcast convertible to U (JEP 440-441) // There is no rule that says that a reference type applies to a primitive type - (mySelectorType instanceof PsiPrimitiveType && JavaFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(label))) && + (mySelectorType instanceof PsiPrimitiveType && PsiUtil.isAvailable(JavaFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS, + label))) && //null type is applicable to any class type !mySelectorType.equals(PsiTypes.nullType())) { HighlightInfo.Builder error = @@ -1085,7 +1086,7 @@ public class SwitchBlockHighlightingModel { if (nonPattern != null) { return getPatternConstantCombinationProblem(nonPattern); } - if (JavaFeature.UNNAMED_PATTERNS_AND_VARIABLES.isAvailable(firstElement)) { + if (PsiUtil.isAvailable(JavaFeature.UNNAMED_PATTERNS_AND_VARIABLES, firstElement)) { PsiCaseLabelElement patternVarElement = ContainerUtil.find(elements, JavaPsiPatternUtil::containsNamedPatternVariable); if (patternVarElement != null) { return new CaseLabelCombinationProblem(patternVarElement, "invalid.case.label.combination.several.patterns.unnamed", null); @@ -1099,7 +1100,7 @@ public class SwitchBlockHighlightingModel { @NotNull private static CaseLabelCombinationProblem getPatternConstantCombinationProblem(PsiCaseLabelElement anchor) { - if (JavaFeature.UNNAMED_PATTERNS_AND_VARIABLES.isAvailable(anchor)) { + if (PsiUtil.isAvailable(JavaFeature.UNNAMED_PATTERNS_AND_VARIABLES, anchor)) { return new CaseLabelCombinationProblem(anchor, "invalid.case.label.combination.constants.and.patterns.unnamed", null); } else { return new CaseLabelCombinationProblem(anchor, "invalid.case.label.combination.constants.and.patterns", null); 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 7b55ab385d91..9e8193e5b6ef 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 @@ -23,7 +23,7 @@ abstract class AddModuleDirectiveFix(module: PsiJavaModule) : PsiUpdateModComman abstract fun getText(): String override fun getPresentation(context: ActionContext, module: PsiJavaModule): Presentation? { - return if (JavaFeature.MODULES.isAvailable(module)) Presentation.of(getText()) else null + return if (PsiUtil.isAvailable(JavaFeature.MODULES, 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 fc5c492613d1..c40ed2df916e 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 @@ -10,6 +10,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; +import com.intellij.psi.util.PsiUtil; import com.siyeh.ig.psiutils.CommentTracker; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -27,7 +28,7 @@ public abstract class MergeModuleStatementsFix extends P @Override protected @Nullable Presentation getPresentation(@NotNull ActionContext context, @NotNull PsiJavaModule element) { - return JavaFeature.MODULES.isAvailable(element) ? Presentation.of(getText()) : null; + return PsiUtil.isAvailable(JavaFeature.MODULES, element) ? Presentation.of(getText()) : null; } @IntentionName diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/intention/AddAnnotationPsiFix.java b/java/java-analysis-impl/src/com/intellij/codeInsight/intention/AddAnnotationPsiFix.java index 374d6dec410b..ccffa2367a2d 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/intention/AddAnnotationPsiFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/intention/AddAnnotationPsiFix.java @@ -161,7 +161,7 @@ public class AddAnnotationPsiFix extends LocalQuickFixOnPsiElement implements Lo if (modifierListOwner.getParent() instanceof PsiParameterList && modifierListOwner.getParent().getParent() instanceof PsiLambdaExpression lambda) { // Lambda parameter without type cannot be annotated. Check if we can specify types - if (JavaFeature.VAR_LAMBDA_PARAMETER.isAvailable(modifierListOwner)) return true; + if (PsiUtil.isAvailable(JavaFeature.VAR_LAMBDA_PARAMETER, modifierListOwner)) return true; return LambdaUtil.createLambdaParameterListWithFormalTypes(lambda.getFunctionalInterfaceType(), lambda, false) != null; } return false; @@ -327,7 +327,7 @@ public class AddAnnotationPsiFix extends LocalQuickFixOnPsiElement implements Lo PsiParameter[] parameters = list.getParameters(); int index = ArrayUtil.indexOf(parameters, parameter); PsiParameterList newList; - if (JavaFeature.VAR_LAMBDA_PARAMETER.isAvailable(list)) { + if (PsiUtil.isAvailable(JavaFeature.VAR_LAMBDA_PARAMETER, list)) { String newListText = StreamEx.of(parameters).map(p -> PsiKeyword.VAR + " " + p.getName()).joining(",", "(", ")"); newList = ((PsiLambdaExpression)JavaPsiFacade.getElementFactory(list.getProject()) .createExpressionFromText(newListText+" -> {}", null)).getParameterList(); diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousHasLambdaAlternativeInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousHasLambdaAlternativeInspection.java index 3ec4779f099b..af426a5e9f4a 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousHasLambdaAlternativeInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousHasLambdaAlternativeInspection.java @@ -10,6 +10,7 @@ import com.intellij.openapi.util.TextRange; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NonNls; @@ -49,7 +50,7 @@ public final class AnonymousHasLambdaAlternativeInspection extends AbstractBaseJ @Override public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) { @NotNull PsiFile context = holder.getFile(); - if (!JavaFeature.THREAD_LOCAL_WITH_INITIAL.isAvailable(context)) { + if (!PsiUtil.isAvailable(JavaFeature.THREAD_LOCAL_WITH_INITIAL, context)) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { 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 a953bb4756c2..4fb7a964f94b 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/VariableTypeCanBeExplicitInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/VariableTypeCanBeExplicitInspection.java @@ -6,6 +6,7 @@ import com.intellij.java.analysis.JavaAnalysisBundle; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiTypesUtil; +import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -15,7 +16,7 @@ public final class VariableTypeCanBeExplicitInspection extends AbstractBaseJavaL @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.LVTI.isAvailable(holder.getFile())) { //var won't be parsed as inferred type otherwise + if (!PsiUtil.isAvailable(JavaFeature.LVTI, 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 80d30c25ce7e..afb314dec3ca 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 @@ -739,7 +739,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 (JavaFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(anchor)) return false; + if (PsiUtil.isAvailable(JavaFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS, 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/java18api/Java8ListSortInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/java18api/Java8ListSortInspection.java index ed455bc20edd..6f380520aa46 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/java18api/Java8ListSortInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/java18api/Java8ListSortInspection.java @@ -10,6 +10,7 @@ import com.intellij.openapi.project.Project; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import com.siyeh.ig.psiutils.ParenthesesUtils; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -19,7 +20,7 @@ public class Java8ListSortInspection extends AbstractBaseJavaLocalInspectionTool @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.ADVANCED_COLLECTIONS_API.isAvailable(holder.getFile())) { + if (!PsiUtil.isAvailable(JavaFeature.ADVANCED_COLLECTIONS_API, holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { 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 3f5ed250bc2b..72db0c22fb3c 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 @@ -116,7 +116,7 @@ public final class Java9ModuleEntryPoint extends EntryPointWithVisibilityLevel { } private static @Nullable PsiJavaModule getJavaModule(@Nullable PsiElement element) { - return element != null && JavaFeature.MODULES.isAvailable(element) ? JavaModuleGraphUtil.findDescriptorByElement(element) : null; + return element != null && PsiUtil.isAvailable(JavaFeature.MODULES, 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 e3e6bd465896..57ccbdbc73d0 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 @@ -813,7 +813,7 @@ public final class RedundantCastUtil { } } if (opType instanceof PsiPrimitiveType) { - if (JavaFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(switchBlock)) { + if (PsiUtil.isAvailable(JavaFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS, 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 +823,7 @@ public final class RedundantCastUtil { if (branch instanceof PsiPattern) return; } } - else if (JavaFeature.PATTERNS_IN_SWITCH.isAvailable(switchBlock)) { + else if (PsiUtil.isAvailable(JavaFeature.PATTERNS_IN_SWITCH, 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 a6cbd9ce8977..e71b7b5c1a16 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 @@ -77,7 +77,7 @@ public final class MethodOnlyUsedFromInnerClassInspection extends BaseInspection if (innerClass == null) { return; } - if (method.hasModifierProperty(PsiModifier.STATIC) && !JavaFeature.INNER_STATICS.isAvailable(method)) { + if (method.hasModifierProperty(PsiModifier.STATIC) && !PsiUtil.isAvailable(JavaFeature.INNER_STATICS, 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 1ac6db3714cb..c24e155400d8 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 @@ -204,7 +204,7 @@ public final class ClassMayBeInterfaceInspection extends BaseInspection { if (!aClass.hasModifierProperty(PsiModifier.ABSTRACT)) { return; } - if (PsiUtil.isLocalClass(aClass) && !JavaFeature.LOCAL_INTERFACES.isAvailable(aClass)) { + if (PsiUtil.isLocalClass(aClass) && !PsiUtil.isAvailable(JavaFeature.LOCAL_INTERFACES, 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 901f4f8c9b59..4ca7a696f20b 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 @@ -25,7 +25,7 @@ import java.util.*; public final class SwitchExpressionCanBePushedDownInspection extends AbstractBaseJavaLocalInspectionTool { @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.SWITCH_EXPRESSION.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!PsiUtil.isAvailable(JavaFeature.SWITCH_EXPRESSION, 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/fixes/AddSerialVersionUIDFix.java b/java/java-analysis-impl/src/com/siyeh/ig/fixes/AddSerialVersionUIDFix.java index 215383c5ced1..d0946adfa7e1 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/fixes/AddSerialVersionUIDFix.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/fixes/AddSerialVersionUIDFix.java @@ -22,6 +22,7 @@ import com.intellij.openapi.project.Project; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; +import com.intellij.psi.util.PsiUtil; import com.siyeh.InspectionGadgetsBundle; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -41,7 +42,7 @@ public class AddSerialVersionUIDFix extends PsiUpdateModCommandQuickFix { final PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(aClass.getProject()); final long serialVersionUID = SerialVersionUIDBuilder.computeDefaultSUID(aClass); final PsiField field = elementFactory.createFieldFromText(generateSerialVersionUIDFieldText(serialVersionUID), aClass); - if (JavaFeature.SERIAL_ANNOTATION.isAvailable(field)) { + if (PsiUtil.isAvailable(JavaFeature.SERIAL_ANNOTATION, field)) { annotateFieldWithSerial(field); } aClass.add(field); 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 0a12d2fc0d00..7c5b708f9fb1 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 @@ -187,7 +187,7 @@ public final class RedundantMethodOverrideInspection extends BaseInspection { method.isVarArgs() != superMethod.isVarArgs()) { return; } - if (superMethod.hasModifierProperty(PsiModifier.DEFAULT) && !JavaFeature.EXTENSION_METHODS.isAvailable(method)) { + if (superMethod.hasModifierProperty(PsiModifier.DEFAULT) && !PsiUtil.isAvailable(JavaFeature.EXTENSION_METHODS, method)) { return; } boolean canBeRemoved = AbstractMethodOverridesAbstractMethodInspection.haveSameParameterTypes(method, superMethod); diff --git a/java/java-analysis-impl/src/com/siyeh/ig/j2me/PrivateMemberAccessBetweenOuterAndInnerClassInspection.java b/java/java-analysis-impl/src/com/siyeh/ig/j2me/PrivateMemberAccessBetweenOuterAndInnerClassInspection.java index bed205b7c4bb..971e1271a3a1 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/j2me/PrivateMemberAccessBetweenOuterAndInnerClassInspection.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/j2me/PrivateMemberAccessBetweenOuterAndInnerClassInspection.java @@ -172,7 +172,7 @@ public final class PrivateMemberAccessBetweenOuterAndInnerClassInspection extend // disable for jsp files IDEADEV-12957 return false; } - return !JavaFeature.NESTMATES.isAvailable(file); + return !PsiUtil.isAvailable(JavaFeature.NESTMATES, file); } @Override diff --git a/java/java-analysis-impl/src/com/siyeh/ig/migration/TryFinallyCanBeTryWithResourcesInspection.java b/java/java-analysis-impl/src/com/siyeh/ig/migration/TryFinallyCanBeTryWithResourcesInspection.java index f5ed0bcf2e42..ebe1e8ecc071 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/migration/TryFinallyCanBeTryWithResourcesInspection.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/migration/TryFinallyCanBeTryWithResourcesInspection.java @@ -260,7 +260,7 @@ public final class TryFinallyCanBeTryWithResourcesInspection extends BaseInspect IntList initializerPositions = new IntArrayList(); for (PsiVariable resourceVariable : collectedVariables) { boolean variableUsedOutsideTry = isVariableUsedOutsideContext(resourceVariable, tryStatement); - if (!JavaFeature.REFS_AS_RESOURCE.isAvailable(finallyBlock) && variableUsedOutsideTry) return null; + if (!PsiUtil.isAvailable(JavaFeature.REFS_AS_RESOURCE, finallyBlock) && variableUsedOutsideTry) return null; if (!variableUsedOutsideTry && resourceVariable instanceof PsiLocalVariable) { PsiExpression initializer = resourceVariable.getInitializer(); boolean hasNonNullInitializer = initializer != null && !PsiTypes.nullType().equals(initializer.getType()); diff --git a/java/java-analysis-impl/src/com/siyeh/ig/migration/TryWithIdenticalCatchesInspection.java b/java/java-analysis-impl/src/com/siyeh/ig/migration/TryWithIdenticalCatchesInspection.java index 33ad7c894dcd..fd20c958f674 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/migration/TryWithIdenticalCatchesInspection.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/migration/TryWithIdenticalCatchesInspection.java @@ -18,6 +18,7 @@ import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.search.LocalSearchScope; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.refactoring.extractMethod.InputVariables; import com.intellij.refactoring.util.duplicates.DuplicatesFinder; import com.intellij.refactoring.util.duplicates.Match; @@ -62,7 +63,7 @@ public final class TryWithIdenticalCatchesInspection extends BaseInspection { @Override public boolean shouldInspect(@NotNull PsiFile file) { - return JavaFeature.MULTI_CATCH.isAvailable(file); + return PsiUtil.isAvailable(JavaFeature.MULTI_CATCH, file); } @Override diff --git a/java/java-analysis-impl/src/com/siyeh/ig/performance/ArraysAsListWithZeroOrOneArgumentInspection.java b/java/java-analysis-impl/src/com/siyeh/ig/performance/ArraysAsListWithZeroOrOneArgumentInspection.java index fd2f5eee72d0..04e39cffbc1a 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/performance/ArraysAsListWithZeroOrOneArgumentInspection.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/performance/ArraysAsListWithZeroOrOneArgumentInspection.java @@ -11,6 +11,7 @@ import com.intellij.modcommand.PsiUpdateModCommandQuickFix; import com.intellij.openapi.project.Project; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; +import com.intellij.psi.util.PsiUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; @@ -131,7 +132,7 @@ public final class ArraysAsListWithZeroOrOneArgumentInspection extends BaseInspe final PsiExpression[] arguments = argumentList.getExpressions(); if (arguments.length > 1) return; - boolean suggestListOf = JavaFeature.COLLECTION_FACTORIES.isAvailable(expression); + boolean suggestListOf = PsiUtil.isAvailable(JavaFeature.COLLECTION_FACTORIES, expression); boolean empty = false; if (arguments.length == 0) { empty = true; 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 a6f776089194..9b7c7cac0470 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 @@ -10,6 +10,7 @@ import com.intellij.codeInspection.LocalQuickFix; import com.intellij.openapi.util.Condition; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; +import com.intellij.psi.util.PsiUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; @@ -60,7 +61,7 @@ public final class ClassInitializerMayBeStaticInspection extends BaseInspection final PsiElement scope = containingClass.getScope(); if (!(scope instanceof PsiJavaFile) && !containingClass.hasModifierProperty(PsiModifier.STATIC) && - !JavaFeature.INNER_STATICS.isAvailable(containingClass)) { + !PsiUtil.isAvailable(JavaFeature.INNER_STATICS, 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 a1f8bdc6a1c4..f324ae25e336 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 @@ -33,7 +33,7 @@ public final class RedundantStringFormatCallInspection extends LocalInspectionTo @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, final boolean isOnTheFly) { - return new RemoveRedundantStringFormatVisitor(holder, isOnTheFly, JavaFeature.TEXT_BLOCKS.isAvailable(holder.getFile())); + return new RemoveRedundantStringFormatVisitor(holder, isOnTheFly, PsiUtil.isAvailable(JavaFeature.TEXT_BLOCKS, 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 786783ba1f6b..df6f7a04e735 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 @@ -273,7 +273,7 @@ public abstract class CodeBlockSurrounder { if (parentContext != ParentContext.ASSIGNMENT && parentContext != ParentContext.RETURN) return null; return new TernaryToIfSurrounder(expression, conditional, parentSurrounder); } - if (JavaPsiConstructorUtil.isConstructorCall(parent) && !JavaFeature.STATEMENTS_BEFORE_SUPER.isAvailable(parent)) { + if (JavaPsiConstructorUtil.isConstructorCall(parent) && !PsiUtil.isAvailable(JavaFeature.STATEMENTS_BEFORE_SUPER, 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 8b47dbcc9a77..787908a9e61f 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 @@ -184,7 +184,7 @@ public final class SwitchUtils { */ @Contract(pure = true) public static boolean isRuleFormatSwitch(@NotNull PsiSwitchBlock block) { - if (!JavaFeature.ENHANCED_SWITCH.isAvailable(block)) { + if (!PsiUtil.isAvailable(JavaFeature.ENHANCED_SWITCH, block)) { return false; } @@ -233,7 +233,7 @@ public final class SwitchUtils { if (JavaFeature.STRING_SWITCH.isSufficient(languageLevel) && type.equalsToText(CommonClassNames.JAVA_LANG_STRING)) { return true; } - return JavaFeature.PATTERNS_IN_SWITCH.isAvailable(expression); + return PsiUtil.isAvailable(JavaFeature.PATTERNS_IN_SWITCH, expression); } return false; } @@ -269,7 +269,7 @@ public final class SwitchUtils { return left; } } - if (JavaFeature.PATTERNS_IN_SWITCH.isAvailable(expression)) { + if (PsiUtil.isAvailable(JavaFeature.PATTERNS_IN_SWITCH, expression)) { final PsiExpression patternSwitchExpression = findPatternSwitchExpression(expression); if (patternSwitchExpression != null) return patternSwitchExpression; } @@ -431,7 +431,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 = JavaFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(expression); + boolean needAppendWhen = PsiUtil.isAvailable(JavaFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS, 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/serialization/MissingSerialAnnotationInspection.java b/java/java-analysis-impl/src/com/siyeh/ig/serialization/MissingSerialAnnotationInspection.java index a6091e04f324..94eef1a27b52 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/serialization/MissingSerialAnnotationInspection.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/serialization/MissingSerialAnnotationInspection.java @@ -7,6 +7,7 @@ import com.intellij.codeInspection.util.InspectionMessage; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; @@ -21,7 +22,7 @@ public final class MissingSerialAnnotationInspection extends BaseInspection { @Override public boolean shouldInspect(@NotNull PsiFile file) { - return JavaFeature.SERIAL_ANNOTATION.isAvailable(file); + return PsiUtil.isAvailable(JavaFeature.SERIAL_ANNOTATION, file); } @Override diff --git a/java/java-analysis-impl/src/com/siyeh/ig/serialization/SerialAnnotationUsedOnWrongMemberInspection.java b/java/java-analysis-impl/src/com/siyeh/ig/serialization/SerialAnnotationUsedOnWrongMemberInspection.java index 2bedd6f107ed..b0550fd35370 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/serialization/SerialAnnotationUsedOnWrongMemberInspection.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/serialization/SerialAnnotationUsedOnWrongMemberInspection.java @@ -7,6 +7,7 @@ import com.intellij.codeInspection.util.InspectionMessage; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; @@ -22,7 +23,7 @@ public final class SerialAnnotationUsedOnWrongMemberInspection extends BaseInspe @Override public boolean shouldInspect(@NotNull PsiFile file) { - return JavaFeature.SERIAL_ANNOTATION.isAvailable(file); + return PsiUtil.isAvailable(JavaFeature.SERIAL_ANNOTATION, file); } @Override diff --git a/java/java-analysis-impl/src/com/siyeh/ig/serialization/SerializableRecordContainsIgnoredMembersInspection.java b/java/java-analysis-impl/src/com/siyeh/ig/serialization/SerializableRecordContainsIgnoredMembersInspection.java index 50a9a86f48b4..01b06ce613f9 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/serialization/SerializableRecordContainsIgnoredMembersInspection.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/serialization/SerializableRecordContainsIgnoredMembersInspection.java @@ -4,6 +4,7 @@ package com.siyeh.ig.serialization; import com.intellij.codeInspection.util.InspectionMessage; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; +import com.intellij.psi.util.PsiUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; @@ -14,7 +15,7 @@ public final class SerializableRecordContainsIgnoredMembersInspection extends Ba @Override public boolean shouldInspect(@NotNull PsiFile file) { - return JavaFeature.SERIAL_ANNOTATION.isAvailable(file); + return PsiUtil.isAvailable(JavaFeature.SERIAL_ANNOTATION, file); } @Override 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 695350e0dde0..19f73b207c61 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 @@ -10,6 +10,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; +import com.intellij.psi.util.PsiUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.PsiReplacementUtil; import com.siyeh.ig.psiutils.TypeUtils; @@ -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 (!JavaFeature.TEXT_BLOCK_ESCAPES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!PsiUtil.isAvailable(JavaFeature.TEXT_BLOCK_ESCAPES, holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; return new JavaElementVisitor() { @Override public void visitFragment(@NotNull PsiFragment fragment) { diff --git a/java/java-analysis-impl/src/com/siyeh/ig/style/UnnecessaryModifierInspection.java b/java/java-analysis-impl/src/com/siyeh/ig/style/UnnecessaryModifierInspection.java index 4a9f5b4bdfdc..28352bac4f28 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/style/UnnecessaryModifierInspection.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/style/UnnecessaryModifierInspection.java @@ -7,6 +7,7 @@ import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; @@ -43,7 +44,7 @@ public final class UnnecessaryModifierInspection extends BaseInspection implemen public void visitClass(@NotNull PsiClass aClass) { final PsiElement parent = aClass.getParent(); final boolean interfaceMember = parent instanceof PsiClass && ((PsiClass)parent).isInterface(); - final boolean redundantStrictfp = JavaFeature.ALWAYS_STRICTFP.isAvailable(aClass) && aClass.hasModifierProperty(PsiModifier.STRICTFP); + final boolean redundantStrictfp = PsiUtil.isAvailable(JavaFeature.ALWAYS_STRICTFP, aClass) && aClass.hasModifierProperty(PsiModifier.STRICTFP); if (aClass.isRecord() || aClass.isInterface() || aClass.isEnum() || interfaceMember || redundantStrictfp) { PsiModifierList modifierList = aClass.getModifierList(); if (modifierList == null) { @@ -102,7 +103,7 @@ public final class UnnecessaryModifierInspection extends BaseInspection implemen @Override public void visitMethod(@NotNull PsiMethod method) { - final boolean redundantStrictfp = JavaFeature.ALWAYS_STRICTFP.isAvailable(method) && method.hasModifierProperty(PsiModifier.STRICTFP); + final boolean redundantStrictfp = PsiUtil.isAvailable(JavaFeature.ALWAYS_STRICTFP, method) && method.hasModifierProperty(PsiModifier.STRICTFP); if (redundantStrictfp) { final PsiModifierList modifierList = method.getModifierList(); final List modifiers = PsiTreeUtil.getChildrenOfTypeAsList(modifierList, PsiKeyword.class); diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/BulkFileAttributesReadInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/BulkFileAttributesReadInspection.java index 909690d2f3e2..0d8cf73cde63 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/BulkFileAttributesReadInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/BulkFileAttributesReadInspection.java @@ -256,7 +256,7 @@ public final class BulkFileAttributesReadInspection extends AbstractBaseJavaLoca if ( initializer != null && parent.getContext() != null - && JavaFeature.LVTI.isAvailable(parent) + && PsiUtil.isAvailable(JavaFeature.LVTI, parent) && JavaRefactoringSettings.getInstance().INTRODUCE_LOCAL_CREATE_VAR_TYPE ) { displayType = TypeUtils.getType(PsiKeyword.VAR, parent.getContext()); diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/CapturingCleanerInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/CapturingCleanerInspection.java index fe4603968950..0474c7398224 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/CapturingCleanerInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/CapturingCleanerInspection.java @@ -95,7 +95,7 @@ public final class CapturingCleanerInspection extends AbstractBaseJavaLocalInspe } if (runnableExpr instanceof PsiNewExpression newExpression) { if (newExpression.getAnonymousClass() != null) { - if (JavaFeature.INNER_NOT_CAPTURE_THIS.isAvailable(trackedClass)) { + if (PsiUtil.isAvailable(JavaFeature.INNER_NOT_CAPTURE_THIS, trackedClass)) { PsiElement elementCapturingThis = getLambdaOrInnerClassElementCapturingThis(newExpression, trackedClass); if (elementCapturingThis != null) { return elementCapturingThis; @@ -110,7 +110,7 @@ public final class CapturingCleanerInspection extends AbstractBaseJavaLocalInspe if (aClass == null) return null; if (aClass.getContainingClass() != trackedClass) return null; if (aClass.hasModifierProperty(PsiModifier.STATIC)) return null; - if (JavaFeature.INNER_NOT_CAPTURE_THIS.isAvailable(trackedClass) && + if (PsiUtil.isAvailable(JavaFeature.INNER_NOT_CAPTURE_THIS, trackedClass) && getLambdaOrInnerClassElementCapturingThis(newExpression, trackedClass) == null) return null; return classReference; } 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 c9bde76a4678..e5a5cac0df36 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/DeconstructionCanBeUsedInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/DeconstructionCanBeUsedInspection.java @@ -27,7 +27,7 @@ public final class DeconstructionCanBeUsedInspection extends AbstractBaseJavaLoc @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!PsiUtil.isAvailable(JavaFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS, 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 90e8011c0110..b53db0cd4bbc 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/DuplicateBranchesInSwitchInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/DuplicateBranchesInSwitchInspection.java @@ -477,7 +477,7 @@ public final class DuplicateBranchesInSwitchInspection extends LocalInspectionTo PsiElement prevElement = PsiTreeUtil.skipWhitespacesAndCommentsBackward(myLabelToMergeWith); if (prevElement != null) moveTarget = prevElement; } - if (JavaFeature.SWITCH_EXPRESSION.isAvailable(moveTarget) && moveTarget instanceof PsiSwitchLabelStatement labelStatement && + if (PsiUtil.isAvailable(JavaFeature.SWITCH_EXPRESSION, moveTarget) && moveTarget instanceof PsiSwitchLabelStatement labelStatement && myBranchToDelete.canCopyCaseValues(myBranchToMergeWith) && !SwitchUtils.isCaseNull(labelStatement) && !SwitchUtils.isDefaultLabel(labelStatement)) { for (PsiElement element : myBranchPrefixToMove) { @@ -1079,7 +1079,8 @@ public final class DuplicateBranchesInSwitchInspection extends LocalInspectionTo if (labelElementList == null) return false; PsiCaseLabelElement[] elements = labelElementList.getElements(); return !ContainerUtil.exists(elements, - element -> element instanceof PsiPattern && (!JavaFeature.UNNAMED_PATTERNS_AND_VARIABLES.isAvailable(element) || + element -> element instanceof PsiPattern && (!PsiUtil.isAvailable( + JavaFeature.UNNAMED_PATTERNS_AND_VARIABLES, element) || JavaPsiPatternUtil.containsNamedPatternVariable(element)) || element instanceof PsiExpression expr && ExpressionUtils.isNullLiteral(expr)); } diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/ExplicitArrayFillingInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/ExplicitArrayFillingInspection.java index fbb6e921d69c..ef4e95980e20 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/ExplicitArrayFillingInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/ExplicitArrayFillingInspection.java @@ -76,7 +76,7 @@ public final class ExplicitArrayFillingInspection extends AbstractBaseJavaLocalI registerProblem(statement, false); return; } - if (!JavaFeature.ADVANCED_COLLECTIONS_API.isAvailable(holder.getFile())) return; + if (!PsiUtil.isAvailable(JavaFeature.ADVANCED_COLLECTIONS_API, holder.getFile())) return; if (!StreamApiUtil.isSupportedStreamElement(container.getElementType())) return; if (!LambdaGenerationUtil.canBeUncheckedLambda(rValue, Predicate.isEqual(loop.getCounter()))) return; registerProblem(statement, true); 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 f7355c652922..5351df0219e1 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/ExplicitToImplicitClassMigrationInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/ExplicitToImplicitClassMigrationInspection.java @@ -17,6 +17,7 @@ import com.intellij.psi.search.PsiSearchHelper; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiMethodUtil; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.util.ObjectUtils; import com.siyeh.ig.psiutils.CommentTracker; import org.jetbrains.annotations.Nls; @@ -27,7 +28,7 @@ public final class ExplicitToImplicitClassMigrationInspection extends AbstractBa @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.IMPLICIT_CLASSES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!PsiUtil.isAvailable(JavaFeature.IMPLICIT_CLASSES, 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 1e2157a3405b..fdbec906148f 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/FillPermitsListInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/FillPermitsListInspection.java @@ -18,7 +18,7 @@ public final class FillPermitsListInspection extends AbstractBaseJavaLocalInspec @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.SEALED_CLASSES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!PsiUtil.isAvailable(JavaFeature.SEALED_CLASSES, 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 666dc1338ed3..2db660d04fdd 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/ForEachWithRecordPatternCanBeUsedInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/ForEachWithRecordPatternCanBeUsedInspection.java @@ -69,7 +69,7 @@ public final class ForEachWithRecordPatternCanBeUsedInspection extends AbstractB @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.RECORD_PATTERNS_IN_FOR_EACH.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!PsiUtil.isAvailable(JavaFeature.RECORD_PATTERNS_IN_FOR_EACH, 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 c6d2637a99af..e08b0ef2da78 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/ImplicitToExplicitClassBackwardMigrationInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/ImplicitToExplicitClassBackwardMigrationInspection.java @@ -10,6 +10,7 @@ import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.*; import com.intellij.psi.util.PsiMethodUtil; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -20,7 +21,7 @@ public final class ImplicitToExplicitClassBackwardMigrationInspection extends Ab @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.IMPLICIT_CLASSES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!PsiUtil.isAvailable(JavaFeature.IMPLICIT_CLASSES, 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 13f57a181bd7..569db83c1d08 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/InconsistentTextBlockIndentInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/InconsistentTextBlockIndentInspection.java @@ -15,6 +15,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiLiteralExpression; import com.intellij.psi.util.PsiLiteralUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.refactoring.util.CommonRefactoringUtil; import com.intellij.util.SmartList; import org.jetbrains.annotations.NotNull; @@ -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 (!JavaFeature.TEXT_BLOCKS.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!PsiUtil.isAvailable(JavaFeature.TEXT_BLOCKS, 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 50e1240a5039..23e0811258be 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/MeaninglessRecordAnnotationInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/MeaninglessRecordAnnotationInspection.java @@ -8,6 +8,7 @@ import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.PsiAnnotation.TargetType; import com.intellij.psi.util.JavaPsiRecordUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; @@ -23,7 +24,7 @@ public final class MeaninglessRecordAnnotationInspection extends AbstractBaseJav @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.RECORDS.isAvailable(holder.getFile())) { + if (!PsiUtil.isAvailable(JavaFeature.RECORDS, 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 bef66531013c..e999bb35856f 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/PatternVariableCanBeUsedInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/PatternVariableCanBeUsedInspection.java @@ -29,11 +29,11 @@ public final class PatternVariableCanBeUsedInspection extends AbstractBaseJavaLo @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.PATTERNS.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!PsiUtil.isAvailable(JavaFeature.PATTERNS, holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; return new JavaElementVisitor() { @Override public void visitMethodCallExpression(@NotNull PsiMethodCallExpression call) { - if (!JavaFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(holder.getFile())) return; + if (!PsiUtil.isAvailable(JavaFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS, 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 d392cd81e4d2..440c8de305e8 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/RecordCanBeClassInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/RecordCanBeClassInspection.java @@ -6,12 +6,13 @@ import com.intellij.openapi.util.TextRange; import com.intellij.pom.java.JavaFeature; import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.*; +import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.NotNull; public final class RecordCanBeClassInspection extends AbstractBaseJavaLocalInspectionTool { @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.RECORDS.isAvailable(holder.getFile())) { + if (!PsiUtil.isAvailable(JavaFeature.RECORDS, 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 5bd11c9da027..a8b2f0c2985d 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/RedundantRecordConstructorInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/RedundantRecordConstructorInspection.java @@ -33,7 +33,7 @@ import java.util.Set; public final class RedundantRecordConstructorInspection extends AbstractBaseJavaLocalInspectionTool { @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.RECORDS.isAvailable(holder.getFile())) { + if (!PsiUtil.isAvailable(JavaFeature.RECORDS, holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/SimplifyStreamApiCallChainsInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/SimplifyStreamApiCallChainsInspection.java index 60d3b8d6e2e3..7445d793dc99 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/SimplifyStreamApiCallChainsInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/SimplifyStreamApiCallChainsInspection.java @@ -1702,7 +1702,7 @@ public final class SimplifyStreamApiCallChainsInspection extends AbstractBaseJav PsiReferenceParameterList typeParameters = qualifierCall.getMethodExpression().getParameterList(); String typeParametersText = typeParameters == null ? "" : ct.text(typeParameters); String factory; - if (JavaFeature.COLLECTION_FACTORIES.isAvailable(call) && MethodCallUtils.isVarArgCall(qualifierCall) && + if (PsiUtil.isAvailable(JavaFeature.COLLECTION_FACTORIES, call) && MethodCallUtils.isVarArgCall(qualifierCall) && ContainerUtil .and(qualifierArgs.getExpressions(), e -> NullabilityUtil.getExpressionNullability(e, true) == Nullability.NOT_NULL)) { factory = JAVA_UTIL_LIST + "." + typeParametersText + "of"; 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 9e1651009a19..66b3bbe864bf 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/StringTemplateMigrationInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/StringTemplateMigrationInspection.java @@ -27,7 +27,7 @@ public final class StringTemplateMigrationInspection extends AbstractBaseJavaLoc @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.STRING_TEMPLATES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!PsiUtil.isAvailable(JavaFeature.STRING_TEMPLATES, 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 47c52efdc8d6..04d082501194 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/TextBlockMigrationInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/TextBlockMigrationInspection.java @@ -38,7 +38,7 @@ public final class TextBlockMigrationInspection extends AbstractBaseJavaLocalIns @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.TEXT_BLOCKS.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!PsiUtil.isAvailable(JavaFeature.TEXT_BLOCKS, 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 0a7a40751865..6f357f6d9a90 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/TrailingWhitespacesInTextBlockInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/TrailingWhitespacesInTextBlockInspection.java @@ -13,6 +13,7 @@ import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.impl.source.tree.java.PsiFragmentImpl; import com.intellij.psi.util.PsiLiteralUtil; +import com.intellij.psi.util.PsiUtil; import com.siyeh.ig.PsiReplacementUtil; import org.jetbrains.annotations.NotNull; @@ -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 (!JavaFeature.TEXT_BLOCKS.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!PsiUtil.isAvailable(JavaFeature.TEXT_BLOCKS, 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 7253644d22e6..fe536bd57b3c 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 @@ -15,6 +15,7 @@ import com.intellij.psi.PsiAnnotation; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiIdentifier; +import com.intellij.psi.util.PsiUtil; import com.intellij.util.ObjectUtils; import com.intellij.util.SmartList; import com.siyeh.ig.BaseInspection; @@ -47,7 +48,7 @@ public final class ClassCanBeRecordInspection extends BaseInspection { @Override public boolean shouldInspect(@NotNull PsiFile file) { - return JavaFeature.RECORDS.isAvailable(file); + return PsiUtil.isAvailable(JavaFeature.RECORDS, 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 f7830dd6bd3b..34a73ac939c6 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 @@ -188,7 +188,7 @@ public final class DataFlowInspection extends DataFlowInspectionBase { } private static void addCreateNullBranchFix(@NotNull PsiExpression qualifier, @NotNull List fixes) { - if (!JavaFeature.PATTERNS_IN_SWITCH.isAvailable(qualifier)) return; + if (!PsiUtil.isAvailable(JavaFeature.PATTERNS_IN_SWITCH, 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 10062c8c76e4..7281981649f6 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 @@ -9,6 +9,7 @@ import com.intellij.openapi.project.Project; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import com.siyeh.ig.psiutils.CommentTracker; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -20,7 +21,7 @@ public final class RedundantLabeledSwitchRuleCodeBlockInspection extends LocalIn @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.ENHANCED_SWITCH.isAvailable(holder.getFile())) { + if (!PsiUtil.isAvailable(JavaFeature.ENHANCED_SWITCH, 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 6472f692b1ec..0153797c1fcb 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 @@ -10,6 +10,7 @@ import com.intellij.openapi.project.Project; import com.intellij.pom.java.JavaFeature; import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.*; +import com.intellij.psi.util.PsiUtil; import com.intellij.util.ObjectUtils; import com.siyeh.ig.psiutils.CommentTracker; import org.jetbrains.annotations.Nls; @@ -21,7 +22,7 @@ public final class SwitchLabeledRuleCanBeCodeBlockInspection extends LocalInspec @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.ENHANCED_SWITCH.isAvailable(holder.getFile())) { + if (!PsiUtil.isAvailable(JavaFeature.ENHANCED_SWITCH, holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8CollectionRemoveIfInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8CollectionRemoveIfInspection.java index 95173a1d802f..ec234a410caf 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8CollectionRemoveIfInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8CollectionRemoveIfInspection.java @@ -34,7 +34,7 @@ public class Java8CollectionRemoveIfInspection extends AbstractBaseJavaLocalInsp @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.ADVANCED_COLLECTIONS_API.isAvailable(holder.getFile())) { + if (!PsiUtil.isAvailable(JavaFeature.ADVANCED_COLLECTIONS_API, holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8ListReplaceAllInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8ListReplaceAllInspection.java index 6836701b7410..85755564599f 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8ListReplaceAllInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8ListReplaceAllInspection.java @@ -52,7 +52,7 @@ public final class Java8ListReplaceAllInspection extends AbstractBaseJavaLocalIn @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.ADVANCED_COLLECTIONS_API.isAvailable(holder.getFile())) { + if (!PsiUtil.isAvailable(JavaFeature.ADVANCED_COLLECTIONS_API, holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8MapApiInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8MapApiInspection.java index 1e24f10b1087..7b46b014cb61 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8MapApiInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8MapApiInspection.java @@ -24,6 +24,7 @@ import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.codeStyle.VariableKind; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.util.ObjectUtils; import com.siyeh.ig.callMatcher.CallMatcher; import com.siyeh.ig.psiutils.*; @@ -79,7 +80,7 @@ public final class Java8MapApiInspection extends AbstractBaseJavaLocalInspection @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.ADVANCED_COLLECTIONS_API.isAvailable(holder.getFile())) { + if (!PsiUtil.isAvailable(JavaFeature.ADVANCED_COLLECTIONS_API, holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8MapForEachInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8MapForEachInspection.java index b3e890056d0c..67a9724aa0bb 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8MapForEachInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/java18api/Java8MapForEachInspection.java @@ -54,7 +54,7 @@ public final class Java8MapForEachInspection extends AbstractBaseJavaLocalInspec @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.ADVANCED_COLLECTIONS_API.isAvailable(holder.getFile())) { + if (!PsiUtil.isAvailable(JavaFeature.ADVANCED_COLLECTIONS_API, holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/java19api/Java9CollectionFactoryInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/java19api/Java9CollectionFactoryInspection.java index 98804cc96bad..9f9e6fc3ca12 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/java19api/Java9CollectionFactoryInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/java19api/Java9CollectionFactoryInspection.java @@ -70,7 +70,7 @@ public final class Java9CollectionFactoryInspection extends AbstractBaseJavaLoca @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.COLLECTION_FACTORIES.isAvailable(holder.getFile())) { + if (!PsiUtil.isAvailable(JavaFeature.COLLECTION_FACTORIES, holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { 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 83505cf40758..a0d2689d2d04 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 @@ -9,6 +9,7 @@ import com.intellij.java.JavaBundle; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.impl.source.resolve.reference.impl.JavaReflectionReferenceUtil; +import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.NotNull; import static com.intellij.codeInsight.daemon.impl.JavaServiceUtil.JAVA_UTIL_SERVICE_LOADER_METHODS; @@ -19,7 +20,7 @@ public final class Java9UndeclaredServiceUsageInspection extends AbstractBaseJav @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.MODULES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!PsiUtil.isAvailable(JavaFeature.MODULES, holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; return new JavaElementVisitor() { @Override public void visitMethodCallExpression(@NotNull PsiMethodCallExpression expression) { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/reflectiveAccess/Java9ReflectionClassVisibilityInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/reflectiveAccess/Java9ReflectionClassVisibilityInspection.java index aaff8932624a..d16b93e045ae 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/reflectiveAccess/Java9ReflectionClassVisibilityInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/reflectiveAccess/Java9ReflectionClassVisibilityInspection.java @@ -12,6 +12,7 @@ import com.intellij.openapi.project.Project; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -25,7 +26,7 @@ public final class Java9ReflectionClassVisibilityInspection extends AbstractBase @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { final PsiFile file = holder.getFile(); - if (JavaFeature.MODULES.isAvailable(file)) { + if (PsiUtil.isAvailable(JavaFeature.MODULES, file)) { final PsiJavaModule javaModule = JavaModuleGraphUtil.findDescriptorByElement(file); if (javaModule != null) { return new JavaElementVisitor() { diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/streamMigration/StreamApiMigrationInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/streamMigration/StreamApiMigrationInspection.java index b8f926d6afbd..3eefa0cfa6dc 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/streamMigration/StreamApiMigrationInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/streamMigration/StreamApiMigrationInspection.java @@ -84,7 +84,7 @@ public final class StreamApiMigrationInspection extends AbstractBaseJavaLocalIns public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) { PsiFile file = holder.getFile(); VirtualFile virtualFile = file.getVirtualFile(); - if (!JavaFeature.STREAMS.isAvailable(file) || virtualFile == null || + if (!PsiUtil.isAvailable(JavaFeature.STREAMS, file) || virtualFile == null || !FileIndexFacade.getInstance(holder.getProject()).isInSourceContent(virtualFile)) { return PsiElementVisitor.EMPTY_VISITOR; } 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 cb00be3605ba..74a61109508d 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 @@ -46,7 +46,7 @@ class CallBuilder(private val context: PsiElement) { PsiUtil.setModifierProperty(declaredVariable, PsiModifier.FINAL, declareFinal) val isInferredVar = outputVariable?.typeElement?.isInferredType == true - if (isInferredVar || JavaFeature.LVTI.isAvailable(context) && settings.INTRODUCE_LOCAL_CREATE_VAR_TYPE == true) { + if (isInferredVar || PsiUtil.isAvailable(JavaFeature.LVTI, 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/parameterObject/ParameterObjectUtils.kt b/java/java-impl-refactorings/src/com/intellij/refactoring/extractMethod/newImpl/parameterObject/ParameterObjectUtils.kt index 82734797797c..27cb0739241e 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 @@ -13,7 +13,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 (JavaFeature.DIAMOND_TYPES.isAvailable(introducedClass) && typeParameters.isNotEmpty()) { + val typeElement = if (PsiUtil.isAvailable(JavaFeature.DIAMOND_TYPES, 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 4d028b063d47..1afb2fd95786 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 @@ -14,6 +14,7 @@ import com.intellij.openapi.util.Disposer import com.intellij.pom.java.JavaFeature import com.intellij.psi.* import com.intellij.psi.util.PsiTreeUtil +import com.intellij.psi.util.PsiUtil import com.intellij.refactoring.extractMethod.ExtractMethodHandler import com.intellij.refactoring.extractMethod.newImpl.ExtractMultipleVariablesException import com.intellij.refactoring.extractMethod.newImpl.MethodExtractor @@ -43,7 +44,7 @@ object ResultObjectExtractor { InplaceExtractUtils.showExtractErrorHint(editor, ExtractMultipleVariablesException(variables, scope)) return } - val shouldInsertRecord = JavaFeature.RECORDS.isAvailable(variables.first()) + val shouldInsertRecord = PsiUtil.isAvailable(JavaFeature.RECORDS, 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 28f1d3ca24fd..858ad928c349 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 @@ -932,7 +932,7 @@ public class InlineMethodProcessor extends BaseRefactoringProcessor { } public static @DialogMessage String checkUnableToInsertCodeBlock(PsiCodeBlock methodBody, PsiElement element) { - if (!JavaFeature.STATEMENTS_BEFORE_SUPER.isAvailable(element) && + if (!PsiUtil.isAvailable(JavaFeature.STATEMENTS_BEFORE_SUPER, 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 48dc993b18d9..1cd1ea7553dd 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 @@ -122,7 +122,7 @@ public class IntroduceFieldHandler extends BaseExpressionToFieldHandler implemen declareStatic = isInSuperOrThis = isInSuperOrThis(occurrences[i]); } } - if (isInSuperOrThis && JavaFeature.STATIC_INTERFACE_CALLS.isAvailable(expr != null ? expr : anchorElement)) { + if (isInSuperOrThis && PsiUtil.isAvailable(JavaFeature.STATIC_INTERFACE_CALLS, 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 794afef2385e..365e9df9bf07 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 @@ -122,7 +122,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 (JavaFeature.INNER_STATICS.isAvailable(aClass)) { + if (PsiUtil.isAvailable(JavaFeature.INNER_STATICS, 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 54ed6b44fd9c..b37936ac9852 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 @@ -563,7 +563,7 @@ public abstract class IntroduceVariableBase extends IntroduceHandlerBase { } public static boolean canBeExtractedWithoutExplicitType(PsiExpression expr) { - if (JavaFeature.LVTI.isAvailable(expr)) { + if (PsiUtil.isAvailable(JavaFeature.LVTI, expr)) { PsiType type = getNormalizedType(expr); if (type != null && !PsiTypes.nullType().equals(type) && PsiTypesUtil.isDenotableType(type, expr)) { PsiExpression copy = @@ -832,7 +832,7 @@ public abstract class IntroduceVariableBase extends IntroduceHandlerBase { } private boolean checkAnchorBeforeThisOrSuper(Project project, Editor editor, PsiElement tempAnchorElement) { - if (JavaFeature.STATEMENTS_BEFORE_SUPER.isAvailable(tempAnchorElement)) { + if (PsiUtil.isAvailable(JavaFeature.STATEMENTS_BEFORE_SUPER, 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 c66c865ebe19..3ae2325f691c 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 @@ -336,7 +336,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 (JavaFeature.PATTERNS.isAvailable(anchor)) { + if (PsiUtil.isAvailable(JavaFeature.PATTERNS, 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 184c58a418a5..5c5f534ce109 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 @@ -139,7 +139,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 && JavaFeature.RECORDS.isAvailable(context)) { + else if (bean == null && access == ReadWriteAccessDetector.Access.Read && PsiUtil.isAvailable(JavaFeature.RECORDS, 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 ea919e321beb..42817c3c3731 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 @@ -26,6 +26,7 @@ import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.codeStyle.JavaCodeStyleSettings; import com.intellij.psi.codeStyle.VariableKind; import com.intellij.psi.javadoc.PsiDocComment; +import com.intellij.psi.util.PsiUtil; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -76,7 +77,7 @@ class ParameterObjectBuilder { } public String buildBeanClass() { - boolean recordsAvailable = JavaFeature.RECORDS.isAvailable(myFile) && + boolean recordsAvailable = PsiUtil.isAvailable(JavaFeature.RECORDS, 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 c4664ea447aa..730ef0984bff 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 @@ -138,7 +138,7 @@ public class MakeStaticHandler implements RefactoringActionHandler, ContextAware return RefactoringBundle.getCannotRefactorMessage(RefactoringBundle.message("cannot.make.abstract.method.static")); } - if(PsiUtil.isLocalOrAnonymousClass(containingClass) && !JavaFeature.INNER_STATICS.isAvailable(member) || + if(PsiUtil.isLocalOrAnonymousClass(containingClass) && !PsiUtil.isAvailable(JavaFeature.INNER_STATICS, 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 dfb590eeeecd..c8460e0b8b4f 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 @@ -11,6 +11,7 @@ import com.intellij.psi.search.LocalSearchScope; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.MethodSignatureUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.psi.util.TypeConversionUtil; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.util.CommonRefactoringUtil; @@ -217,7 +218,7 @@ public class PushDownConflicts { if (movedMember.hasModifierProperty(PsiModifier.STATIC) && !targetClass.hasModifierProperty(PsiModifier.STATIC) && !(targetClass.getParent() instanceof PsiFile) && - !JavaFeature.INNER_STATICS.isAvailable(targetClass)) { + !PsiUtil.isAvailable(JavaFeature.INNER_STATICS, 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-refactorings/src/com/intellij/refactoring/move/moveClassesOrPackages/ModuleInfoUsageDetector.java b/java/java-impl-refactorings/src/com/intellij/refactoring/move/moveClassesOrPackages/ModuleInfoUsageDetector.java index 3f16a158cc74..40531f741f08 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/move/moveClassesOrPackages/ModuleInfoUsageDetector.java +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/move/moveClassesOrPackages/ModuleInfoUsageDetector.java @@ -5,6 +5,7 @@ import com.intellij.codeInsight.daemon.impl.analysis.JavaModuleGraphUtil; import com.intellij.openapi.project.Project; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; +import com.intellij.psi.util.PsiUtil; import com.intellij.refactoring.MoveDestination; import com.intellij.refactoring.safeDelete.ModuleInfoSafeDeleteUsageDetector; import com.intellij.usageView.UsageInfo; @@ -54,7 +55,7 @@ public abstract class ModuleInfoUsageDetector { @NotNull private static MultiMap groupClassesByDir(PsiElement @NotNull [] elementsToMove) { PsiElement firstElement = ArrayUtil.getFirstElement(elementsToMove); - if (firstElement == null || !JavaFeature.MODULES.isAvailable(firstElement)) return MultiMap.empty(); + if (firstElement == null || !PsiUtil.isAvailable(JavaFeature.MODULES, firstElement)) return MultiMap.empty(); MultiMap result = new MultiMap<>(); for (PsiElement element : elementsToMove) { PsiClass psiClass = ObjectUtils.tryCast(element, PsiClass.class); diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/typeMigration/ui/TypeMigrationDialog.java b/java/java-impl-refactorings/src/com/intellij/refactoring/typeMigration/ui/TypeMigrationDialog.java index 37ff02093e64..ae4273629599 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/typeMigration/ui/TypeMigrationDialog.java +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/typeMigration/ui/TypeMigrationDialog.java @@ -23,10 +23,7 @@ import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.searches.ReferencesSearch; -import com.intellij.psi.util.PsiFormatUtil; -import com.intellij.psi.util.PsiFormatUtilBase; -import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.psi.util.TypeConversionUtil; +import com.intellij.psi.util.*; import com.intellij.refactoring.typeMigration.TypeMigrationLabeler; import com.intellij.refactoring.typeMigration.TypeMigrationProcessor; import com.intellij.refactoring.typeMigration.TypeMigrationRules; @@ -143,10 +140,10 @@ public abstract class TypeMigrationDialog extends RefactoringDialog { final String text = rootType != null ? rootType.getCanonicalText(true) : ""; int flags = 0; PsiElement root = roots[0]; - if (JavaFeature.VARARGS.isAvailable(root)) { + if (PsiUtil.isAvailable(JavaFeature.VARARGS, root)) { flags |= JavaCodeFragmentFactory.ALLOW_ELLIPSIS; } - if (JavaFeature.MULTI_CATCH.isAvailable(root)) { + if (PsiUtil.isAvailable(JavaFeature.MULTI_CATCH, root)) { flags |= JavaCodeFragmentFactory.ALLOW_DISJUNCTION; } flags |= JavaCodeFragmentFactory.ALLOW_VOID; diff --git a/java/java-impl/src/com/intellij/codeEditor/JavaStripTrailingSpacesFilterFactory.java b/java/java-impl/src/com/intellij/codeEditor/JavaStripTrailingSpacesFilterFactory.java index af6646277981..7bd91a9099db 100644 --- a/java/java-impl/src/com/intellij/codeEditor/JavaStripTrailingSpacesFilterFactory.java +++ b/java/java-impl/src/com/intellij/codeEditor/JavaStripTrailingSpacesFilterFactory.java @@ -9,6 +9,7 @@ import com.intellij.pom.java.JavaFeature; import com.intellij.psi.JavaRecursiveElementWalkingVisitor; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiLiteralExpression; +import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.NotNull; public final class JavaStripTrailingSpacesFilterFactory extends PsiBasedStripTrailingSpacesFilter.Factory { @@ -31,7 +32,7 @@ public final class JavaStripTrailingSpacesFilterFactory extends PsiBasedStripTra @Override protected void process(@NotNull PsiFile psiFile) { - if (!JavaFeature.TEXT_BLOCKS.isAvailable(psiFile)) return; + if (!PsiUtil.isAvailable(JavaFeature.TEXT_BLOCKS, 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 11132d5683ec..45f4ea46f447 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaClassNameInsertHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaClassNameInsertHandler.java @@ -116,7 +116,7 @@ class JavaClassNameInsertHandler implements InsertHandler 0) { + if (ref != null && PsiUtil.isAvailable(JavaFeature.PATTERNS, 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 fec50be4b65f..a051ff0af72b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java @@ -274,7 +274,7 @@ public final class JavaCompletionContributor extends CompletionContributor imple return element instanceof PsiEnumConstant; } }; - if (!JavaFeature.PATTERNS_IN_SWITCH.isAvailable(position)) { + if (!PsiUtil.isAvailable(JavaFeature.PATTERNS_IN_SWITCH, position)) { return enumClassFilter; } @@ -321,7 +321,7 @@ public final class JavaCompletionContributor extends CompletionContributor imple } }; - if (!JavaFeature.PATTERNS_IN_SWITCH.isAvailable(position) || + if (!PsiUtil.isAvailable(JavaFeature.PATTERNS_IN_SWITCH, position) || isPrimitive(selectorType) || TypeUtils.isJavaLangString(selectorType)) { ClassFilter classFilter = new ClassFilter(PsiClass.class) { @Override @@ -1012,7 +1012,7 @@ public final class JavaCompletionContributor extends CompletionContributor imple } if (IN_SWITCH_LABEL.accepts(position)) { - return JavaFeature.PATTERNS_IN_SWITCH.isAvailable(parent); + return PsiUtil.isAvailable(JavaFeature.PATTERNS_IN_SWITCH, 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 d19fa97a35cf..d034f3c58b98 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java @@ -535,7 +535,7 @@ public final class JavaCompletionUtil { if (ReferenceListWeigher.INSTANCE.getApplicability(psiClass, myPlace) == inapplicable) { return new MarkProblem(MarkType.RED, null); } - if (JavaFeature.MODULES.isAvailable(myPlace)) { + if (PsiUtil.isAvailable(JavaFeature.MODULES, 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/JavaInheritorsGetter.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaInheritorsGetter.java index eeaa44857c0b..cb9007937321 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaInheritorsGetter.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaInheritorsGetter.java @@ -118,7 +118,7 @@ public class JavaInheritorsGetter { PsiType psiType = GenericsUtil.eliminateWildcards(type); if (JavaSmartCompletionContributor.AFTER_NEW.accepts(parameters.getOriginalPosition()) && - JavaFeature.DIAMOND_TYPES.isAvailable(parameters.getOriginalFile())) { + PsiUtil.isAvailable(JavaFeature.DIAMOND_TYPES, parameters.getOriginalFile())) { final PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(psiClass.getProject()); PsiClassType classType = (PsiClassType)type; if (psiClass.hasTypeParameters() && !classType.isRaw()) { 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 f964ea9b1d76..1fdc506f6fa9 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaKeywordCompletion.java @@ -257,7 +257,7 @@ public class JavaKeywordCompletion { if (!canAddKeywords()) return; PsiFile file = myPosition.getContainingFile(); - if (PsiJavaModule.MODULE_INFO_FILE.equals(file.getName()) && JavaFeature.MODULES.isAvailable(file)) { + if (PsiJavaModule.MODULE_INFO_FILE.equals(file.getName()) && PsiUtil.isAvailable(JavaFeature.MODULES, file)) { addModuleKeywords(); return; } @@ -326,7 +326,7 @@ public class JavaKeywordCompletion { } private void addCaseAfterNullDefault() { - if (!JavaFeature.PATTERNS_IN_SWITCH.isAvailable(myPosition)) return; + if (!PsiUtil.isAvailable(JavaFeature.PATTERNS_IN_SWITCH, myPosition)) return; PsiCaseLabelElementList labels = PsiTreeUtil.getParentOfType(myPosition, PsiCaseLabelElementList.class); if (labels == null || labels.getElementCount() != 2 || !(labels.getElements()[0] instanceof PsiLiteralExpression literalExpression && @@ -362,7 +362,7 @@ public class JavaKeywordCompletion { } private void addWhen() { - if (!JavaFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(myPosition)) { + if (!PsiUtil.isAvailable(JavaFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS, myPosition)) { return; } PsiElement element = PsiTreeUtil.skipWhitespacesAndCommentsForward(myPrevLeaf); @@ -457,7 +457,7 @@ public class JavaKeywordCompletion { } private boolean isInsideCaseLabel() { - if (!JavaFeature.PATTERNS_IN_SWITCH.isAvailable(myPosition)) return false; + if (!PsiUtil.isAvailable(JavaFeature.PATTERNS_IN_SWITCH, myPosition)) return false; return psiElement().withSuperParent(2, PsiCaseLabelElementList.class).accepts(myPosition); } @@ -468,11 +468,11 @@ public class JavaKeywordCompletion { } private boolean isVarAllowed() { - if (JavaFeature.VAR_LAMBDA_PARAMETER.isAvailable(myPosition) && isLambdaParameterType()) { + if (PsiUtil.isAvailable(JavaFeature.VAR_LAMBDA_PARAMETER, myPosition) && isLambdaParameterType()) { return true; } - if (!JavaFeature.LVTI.isAvailable(myPosition)) return false; + if (!PsiUtil.isAvailable(JavaFeature.LVTI, myPosition)) return false; if (isAtCatchOrResourceVariableStart(myPosition) && PsiTreeUtil.getParentOfType(myPosition, PsiCatchSection.class) == null) { return true; @@ -532,7 +532,7 @@ public class JavaKeywordCompletion { } private void addPatternMatchingInSwitchCases() { - if (!JavaFeature.PATTERNS_IN_SWITCH.isAvailable(myPosition)) return; + if (!PsiUtil.isAvailable(JavaFeature.PATTERNS_IN_SWITCH, myPosition)) return; PsiSwitchBlock switchBlock = getSwitchFromLabelPosition(myPosition); if (switchBlock == null) return; @@ -732,7 +732,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 = JavaFeature.EXTENSION_METHODS.isAvailable(myPosition) && isInsideInheritorClass(); + final boolean insideInheritorClass = PsiUtil.isAvailable(JavaFeature.EXTENSION_METHODS, myPosition) && isInsideInheritorClass(); if (!afterDot || insideQualifierClass || insideInheritorClass) { if (!afterDot || insideQualifierClass) { addKeyword(createKeyword(PsiKeyword.THIS)); @@ -771,7 +771,7 @@ public class JavaKeywordCompletion { if (PsiTreeUtil.getParentOfType(myPosition, PsiAnnotation.class) == null) { if (!statementPosition) { addKeyword(TailTypeDecorator.withTail(createKeyword(PsiKeyword.NEW), TailTypes.insertSpaceType())); - if (JavaFeature.ENHANCED_SWITCH.isAvailable(myPosition)) { + if (PsiUtil.isAvailable(JavaFeature.ENHANCED_SWITCH, myPosition)) { addKeyword(new OverridableSpace(createKeyword(PsiKeyword.SWITCH), JavaTailTypes.SWITCH_LPARENTH)); } } @@ -827,7 +827,7 @@ public class JavaKeywordCompletion { } } - if (JavaFeature.STATIC_IMPORTS.isAvailable(file) && myPrevLeaf != null && myPrevLeaf.textMatches(PsiKeyword.IMPORT)) { + if (PsiUtil.isAvailable(JavaFeature.STATIC_IMPORTS, file) && myPrevLeaf != null && myPrevLeaf.textMatches(PsiKeyword.IMPORT)) { addKeyword(new OverridableSpace(createKeyword(PsiKeyword.STATIC), TailTypes.humbleSpaceBeforeWordType())); } } @@ -878,13 +878,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 (JavaFeature.RECORDS.isAvailable(myPosition)) { + if (PsiUtil.isAvailable(JavaFeature.RECORDS, myPosition)) { addKeyword(new OverridableSpace(createKeyword(PsiKeyword.RECORD), TailTypes.humbleSpaceBeforeWordType())); } - if (JavaFeature.LOCAL_ENUMS.isAvailable(myPosition)) { + if (PsiUtil.isAvailable(JavaFeature.LOCAL_ENUMS, myPosition)) { addKeyword(new OverridableSpace(createKeyword(PsiKeyword.ENUM), TailTypes.humbleSpaceBeforeWordType())); } - if (JavaFeature.LOCAL_INTERFACES.isAvailable(myPosition)) { + if (PsiUtil.isAvailable(JavaFeature.LOCAL_INTERFACES, myPosition)) { addKeyword(new OverridableSpace(createKeyword(PsiKeyword.INTERFACE), TailTypes.humbleSpaceBeforeWordType())); } } @@ -893,7 +893,7 @@ public class JavaKeywordCompletion { List keywords = new ArrayList<>(); keywords.add(PsiKeyword.CLASS); keywords.add(PsiKeyword.INTERFACE); - if (JavaFeature.RECORDS.isAvailable(myPosition)) { + if (PsiUtil.isAvailable(JavaFeature.RECORDS, myPosition)) { keywords.add(PsiKeyword.RECORD); } if (PsiUtil.isLanguageLevel5OrHigher(myPosition)) { @@ -1039,7 +1039,7 @@ public class JavaKeywordCompletion { if (psiClass != null) { if (!psiClass.isEnum() && !psiClass.isRecord()) { addKeyword(new OverridableSpace(createKeyword(PsiKeyword.EXTENDS), TailTypes.humbleSpaceBeforeWordType())); - if (JavaFeature.SEALED_CLASSES.isAvailable(psiClass)) { + if (PsiUtil.isAvailable(JavaFeature.SEALED_CLASSES, psiClass)) { PsiModifierList modifiers = psiClass.getModifierList(); if (myParameters.getInvocationCount() > 1 || (modifiers != null && @@ -1276,7 +1276,7 @@ public class JavaKeywordCompletion { addKeyword(br); } else if (psiElement().inside(PsiSwitchExpression.class).accepts(myPosition) && - JavaFeature.SWITCH_EXPRESSION.isAvailable(myPosition)) { + PsiUtil.isAvailable(JavaFeature.SWITCH_EXPRESSION, 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 833ea73d224c..1e4592b84b3b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaPatternCompletionUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaPatternCompletionUtil.java @@ -11,6 +11,7 @@ import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.util.PsiFormatUtil; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.util.containers.ContainerUtil; import one.util.streamex.EntryStream; import org.jetbrains.annotations.NotNull; @@ -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 (!JavaFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS.isAvailable(psiFile)) return false; + if (!PsiUtil.isAvailable(JavaFeature.PATTERN_GUARDS_AND_RECORD_PATTERNS, 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 e2fa75b8747c..efdb1a3fb6be 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/ModifierChooser.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/ModifierChooser.java @@ -95,7 +95,7 @@ public final class ModifierChooser { } public static String[] addClassModifiers(PsiModifierList list, @NotNull PsiElement scope) { - if (JavaFeature.SEALED_CLASSES.isAvailable(scope)) { + if (PsiUtil.isAvailable(JavaFeature.SEALED_CLASSES, scope)) { if (list == null) { return CLASS_MODIFIERS_WITH_SEALED.clone(); } @@ -136,20 +136,20 @@ public final class ModifierChooser { } private static String[][] getInterfaceMemberModifiers(@NotNull PsiElement list) { - if (JavaFeature.SEALED_CLASSES.isAvailable(list)) { + if (PsiUtil.isAvailable(JavaFeature.SEALED_CLASSES, list)) { return INTERFACE_MEMBER_MODIFIERS_WITH_SEALED; } if (PsiUtil.isLanguageLevel9OrHigher(list)) { return INTERFACE_MEMBER_MODIFIERS_WITH_PRIVATE; } - if (JavaFeature.STATIC_INTERFACE_CALLS.isAvailable(list)) { + if (PsiUtil.isAvailable(JavaFeature.STATIC_INTERFACE_CALLS, list)) { return INTERFACE_MEMBER_MODIFIERS_WITH_DEFAULT; } return INTERFACE_MEMBER_MODIFIERS; } private static String[][] getClassMemberModifiers(@NotNull PsiElement list) { - if (JavaFeature.SEALED_CLASSES.isAvailable(list)) { + if (PsiUtil.isAvailable(JavaFeature.SEALED_CLASSES, 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 521e8911856b..c518f94b332f 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 @@ -192,7 +192,7 @@ public final class JavaCompletionProcessor implements PsiScopeProcessor, Element } } - if (!(element instanceof PsiClass psiClass) || !PATTERNS_IN_SWITCH.isAvailable(myElement)) return true; + if (!(element instanceof PsiClass psiClass) || !PsiUtil.isAvailable(PATTERNS_IN_SWITCH, myElement)) return true; if (psiClass.hasModifierProperty(PsiModifier.SEALED)) { addSealedHierarchy(state, psiClass); 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 6571ac1a799b..805dc880aa65 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 @@ -10,6 +10,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiJavaCodeReferenceElement; import com.intellij.psi.PsiKeyword; import com.intellij.psi.PsiMethod; +import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -19,7 +20,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 (!JavaFeature.SEALED_CLASSES.isAvailable(ref) && ref.textMatches(PsiKeyword.SEALED)) { + if (!PsiUtil.isAvailable(JavaFeature.SEALED_CLASSES, ref) && ref.textMatches(PsiKeyword.SEALED)) { ArrayList intentions = new ArrayList<>(); registerIncreaseLanguageLevelFixes(ref, JavaFeature.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 5412c7a2a246..6e962b0a29bc 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 @@ -107,7 +107,7 @@ public class DefaultQuickFixProvider extends UnresolvedReferenceQuickFixProvider result.add(new CreateClassFromUsageFix(ref, CreateClassKind.ENUM)); result.add(new CreateClassFromUsageFix(ref, CreateClassKind.ANNOTATION)); } - if (JavaFeature.RECORDS.isAvailable(ref)) { + if (PsiUtil.isAvailable(JavaFeature.RECORDS, ref)) { if (isNewExpression) { result.add(new CreateRecordFromNewFix((PsiNewExpression)parent)); } @@ -118,7 +118,7 @@ public class DefaultQuickFixProvider extends UnresolvedReferenceQuickFixProvider if (isNewExpression) { result.add(new CreateInnerClassFromNewFix((PsiNewExpression)parent)); - if (JavaFeature.RECORDS.isAvailable(ref) && ((PsiNewExpression)parent).getQualifier() == null) { + if (PsiUtil.isAvailable(JavaFeature.RECORDS, 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 298e10809c16..2ae0cce15f17 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 @@ -55,7 +55,7 @@ public class RenameToIgnoredFix extends RenameElementFix { } private static boolean canBeUnnamed(PsiVariable variable) { - if (!JavaFeature.UNNAMED_PATTERNS_AND_VARIABLES.isAvailable(variable)) return false; + if (!PsiUtil.isAvailable(JavaFeature.UNNAMED_PATTERNS_AND_VARIABLES, 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 7d4ee9fa755f..11788a15801d 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 @@ -10,6 +10,7 @@ import com.intellij.modcommand.PsiUpdateModCommandAction; import com.intellij.openapi.util.NlsSafe; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; +import com.intellij.psi.util.PsiUtil; 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/RemoveRedundantParameterTypesFix.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/RemoveRedundantParameterTypesFix.java index a4a97cd43fa5..b16bd8a43ef3 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/RemoveRedundantParameterTypesFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/RemoveRedundantParameterTypesFix.java @@ -9,6 +9,7 @@ import com.intellij.modcommand.PsiUpdateModCommandAction; import com.intellij.openapi.util.text.StringUtil; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; +import com.intellij.psi.util.PsiUtil; import com.intellij.util.containers.ContainerUtil; import com.siyeh.ig.psiutils.CommentTracker; import org.jetbrains.annotations.NotNull; @@ -38,7 +39,7 @@ public class RemoveRedundantParameterTypesFix extends PsiUpdateModCommandAction< for (PsiParameter parameter : parameters) { PsiTypeElement typeElement = parameter.getTypeElement(); if (typeElement == null) return false; - if (!JavaFeature.VAR_LAMBDA_PARAMETER.isAvailable(parameterList)) { + if (!PsiUtil.isAvailable(JavaFeature.VAR_LAMBDA_PARAMETER, parameterList)) { if (AnonymousCanBeLambdaInspection.mustKeepAnnotations(parameter, Collections.emptySet())) { return false; } @@ -73,7 +74,7 @@ public class RemoveRedundantParameterTypesFix extends PsiUpdateModCommandAction< private static void removeTypes(PsiLambdaExpression lambdaExpression) { if (lambdaExpression != null) { final PsiParameter[] parameters = lambdaExpression.getParameterList().getParameters(); - if (JavaFeature.VAR_LAMBDA_PARAMETER.isAvailable(lambdaExpression) && + if (PsiUtil.isAvailable(JavaFeature.VAR_LAMBDA_PARAMETER, lambdaExpression) && ContainerUtil.exists(parameters, parameter -> keepVarType(parameter))) { for (PsiParameter parameter : parameters) { PsiTypeElement element = parameter.getTypeElement(); 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 acafd1597616..695c37da0362 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 @@ -42,7 +42,7 @@ public final class SealClassAction extends PsiUpdateModCommandAction { } private static boolean isAvailable(@NotNull ActionContext context, @NotNull PsiClass aClass) { - if (!JavaFeature.SEALED_CLASSES.isAvailable(aClass)) return false; + if (!PsiUtil.isAvailable(JavaFeature.SEALED_CLASSES, 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/intention/impl/SurroundAutoCloseableAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/SurroundAutoCloseableAction.java index a1871e0605e2..d3946925c2b7 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/SurroundAutoCloseableAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/SurroundAutoCloseableAction.java @@ -40,7 +40,7 @@ public final class SurroundAutoCloseableAction extends PsiUpdateModCommandAction @Override protected @Nullable Presentation getPresentation(@NotNull ActionContext context, @NotNull PsiElement element) { boolean available = element.getLanguage().isKindOf(JavaLanguage.INSTANCE) && - JavaFeature.TRY_WITH_RESOURCES.isAvailable(element) && + PsiUtil.isAvailable(JavaFeature.TRY_WITH_RESOURCES, element) && (findVariable(element) != null || findExpression(element) != null); return available ? Presentation.of(getFamilyName()) : null; } 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 0949337d87ae..8fafbf66a202 100644 --- a/java/java-impl/src/com/intellij/codeInsight/lookup/PsiTypeLookupItem.java +++ b/java/java-impl/src/com/intellij/codeInsight/lookup/PsiTypeLookupItem.java @@ -349,7 +349,7 @@ public final class PsiTypeLookupItem extends LookupItem implements Typed } // jigsaw module - if (JavaFeature.MODULES.isAvailable(file)) { + if (PsiUtil.isAvailable(JavaFeature.MODULES, 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 0148c0fc4272..a40f6006184c 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 @@ -17,6 +17,7 @@ import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.util.Function; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; @@ -37,14 +38,14 @@ public class SwitchStatementPostfixTemplate extends SurroundPostfixTemplateBase if (type == null) return false; if (PsiTypes.intType().isAssignableFrom(type)) return true; if (type instanceof PsiClassType classType) { - if (JavaFeature.PATTERNS_IN_SWITCH.isAvailable(expression)) return true; + if (PsiUtil.isAvailable(JavaFeature.PATTERNS_IN_SWITCH, expression)) return true; final PsiClass psiClass = classType.resolve(); if (psiClass != null && psiClass.isEnum()) return true; } if (type.equalsToText(CommonClassNames.JAVA_LANG_STRING) && expression.getContainingFile() instanceof PsiJavaFile javaFile) { - if (JavaFeature.STRING_SWITCH.isAvailable(javaFile)) return true; + if (PsiUtil.isAvailable(JavaFeature.STRING_SWITCH, javaFile)) return true; } return false; @@ -74,7 +75,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 (JavaFeature.ENHANCED_SWITCH.isAvailable(expr)) { + else if (PsiUtil.isAvailable(JavaFeature.ENHANCED_SWITCH, expr)) { PsiSwitchExpression switchExpression = (PsiSwitchExpression)factory.createExpressionFromText("switch(1){case 1->1;}", null); return postprocessSwitch(editor, expr, codeStyleManager, expr, switchExpression); } @@ -120,7 +121,7 @@ public class SwitchStatementPostfixTemplate extends SurroundPostfixTemplateBase return new PostfixTemplateExpressionSelectorBase(additionalFilter) { @Override protected List getNonFilteredExpressions(@NotNull PsiElement context, @NotNull Document document, int offset) { - boolean isEnhancedSwitchAvailable = JavaFeature.ENHANCED_SWITCH.isAvailable(context); + boolean isEnhancedSwitchAvailable = PsiUtil.isAvailable(JavaFeature.ENHANCED_SWITCH, 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/EnhancedSwitchMigrationInspection.java b/java/java-impl/src/com/intellij/codeInspection/EnhancedSwitchMigrationInspection.java index 36f79811f085..43f499f46640 100644 --- a/java/java-impl/src/com/intellij/codeInspection/EnhancedSwitchMigrationInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/EnhancedSwitchMigrationInspection.java @@ -55,7 +55,7 @@ public final class EnhancedSwitchMigrationInspection extends AbstractBaseJavaLoc @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.ENHANCED_SWITCH.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!PsiUtil.isAvailable(JavaFeature.ENHANCED_SWITCH, holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; return new JavaElementVisitor() { @Override public void visitSwitchStatement(@NotNull PsiSwitchStatement statement) { diff --git a/java/java-impl/src/com/intellij/codeInspection/LambdaCanBeMethodReferenceInspection.java b/java/java-impl/src/com/intellij/codeInspection/LambdaCanBeMethodReferenceInspection.java index 23b593bbee45..610f07907e5c 100644 --- a/java/java-impl/src/com/intellij/codeInspection/LambdaCanBeMethodReferenceInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/LambdaCanBeMethodReferenceInspection.java @@ -59,7 +59,7 @@ public final class LambdaCanBeMethodReferenceInspection extends AbstractBaseJava @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.LAMBDA_EXPRESSIONS.isAvailable(holder.getFile())) { + if (!PsiUtil.isAvailable(JavaFeature.LAMBDA_EXPRESSIONS, holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-impl/src/com/intellij/codeInspection/RedundantExplicitVariableTypeInspection.java b/java/java-impl/src/com/intellij/codeInspection/RedundantExplicitVariableTypeInspection.java index 092531999a1e..062d2273511a 100644 --- a/java/java-impl/src/com/intellij/codeInspection/RedundantExplicitVariableTypeInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/RedundantExplicitVariableTypeInspection.java @@ -23,7 +23,7 @@ public final class RedundantExplicitVariableTypeInspection extends AbstractBaseJ @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.LVTI.isAvailable(holder.getFile())) { + if (!PsiUtil.isAvailable(JavaFeature.LVTI, holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-impl/src/com/intellij/codeInspection/java18StreamApi/StaticPseudoFunctionalStyleMethodInspection.java b/java/java-impl/src/com/intellij/codeInspection/java18StreamApi/StaticPseudoFunctionalStyleMethodInspection.java index 0f35937d6256..0c5069020455 100644 --- a/java/java-impl/src/com/intellij/codeInspection/java18StreamApi/StaticPseudoFunctionalStyleMethodInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/java18StreamApi/StaticPseudoFunctionalStyleMethodInspection.java @@ -12,6 +12,7 @@ import com.intellij.openapi.util.WriteExternalException; import com.intellij.openapi.util.text.StringUtil; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; +import com.intellij.psi.util.PsiUtil; import org.jdom.Element; import org.jetbrains.annotations.NotNull; @@ -34,7 +35,7 @@ public final class StaticPseudoFunctionalStyleMethodInspection extends AbstractB @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.STREAMS.isAvailable(holder.getFile())) { + if (!PsiUtil.isAvailable(JavaFeature.STREAMS, holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-impl/src/com/intellij/ide/actions/CreateClassAction.java b/java/java-impl/src/com/intellij/ide/actions/CreateClassAction.java index 09910b9140df..9cbe0f432c6a 100644 --- a/java/java-impl/src/com/intellij/ide/actions/CreateClassAction.java +++ b/java/java-impl/src/com/intellij/ide/actions/CreateClassAction.java @@ -38,7 +38,7 @@ public class CreateClassAction extends JavaCreateTemplateInPackageAction Boolean): ErrorWithFixes? { val originalTargetFile = targetFile?.originalFile val useFile = place.containingFile?.originalFile ?: return null - if (!JavaFeature.MODULES.isAvailable(useFile)) return null + if (!PsiUtil.isAvailable(JavaFeature.MODULES, 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 7cb74a649462..c74d903f8a97 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 @@ -129,7 +129,7 @@ public final class ImportHelper{ classesToUseSingle.addAll(toReimport); try { - boolean stringTemplates = JavaFeature.STRING_TEMPLATES.isAvailable(file); + boolean stringTemplates = PsiUtil.isAvailable(JavaFeature.STRING_TEMPLATES, 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 8969c94af76d..b6b572430c77 100644 --- a/java/java-impl/src/com/siyeh/ig/classlayout/ClassInitializerInspection.java +++ b/java/java-impl/src/com/siyeh/ig/classlayout/ClassInitializerInspection.java @@ -68,7 +68,7 @@ public final class ClassInitializerInspection extends BaseInspection { PsiClassInitializer classInitializer = (PsiClassInitializer)infos[0]; final PsiClass aClass = classInitializer.getContainingClass(); assert aClass != null; - if (PsiUtil.isInnerClass(aClass) && !JavaFeature.INNER_STATICS.isAvailable(aClass) || + if (PsiUtil.isInnerClass(aClass) && !PsiUtil.isAvailable(JavaFeature.INNER_STATICS, 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 436e0d728367..137248ca3001 100644 --- a/java/java-impl/src/com/siyeh/ig/controlflow/UnnecessaryDefaultInspection.java +++ b/java/java-impl/src/com/siyeh/ig/controlflow/UnnecessaryDefaultInspection.java @@ -28,6 +28,7 @@ import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.controlFlow.*; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; @@ -95,7 +96,7 @@ public final class UnnecessaryDefaultInspection extends BaseInspection { @Override public boolean shouldInspect(@NotNull PsiFile file) { - return !onlyReportSwitchExpressions || JavaFeature.ENHANCED_SWITCH.isAvailable(file); + return !onlyReportSwitchExpressions || PsiUtil.isAvailable(JavaFeature.ENHANCED_SWITCH, 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 b0319f5b4af0..14549556b543 100644 --- a/java/java-impl/src/com/siyeh/ig/dataflow/CreateNullBranchFix.java +++ b/java/java-impl/src/com/siyeh/ig/dataflow/CreateNullBranchFix.java @@ -6,6 +6,7 @@ import com.intellij.modcommand.ModPsiUpdater; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.psi.util.TypeConversionUtil; import com.intellij.util.ArrayUtil; import com.intellij.util.containers.ContainerUtil; @@ -36,7 +37,7 @@ public final class CreateNullBranchFix extends BaseSwitchFix { @Override protected void invoke(@NotNull ActionContext context, @NotNull PsiSwitchBlock switchBlock, @NotNull ModPsiUpdater updater) { - if (!JavaFeature.PATTERNS_IN_SWITCH.isAvailable(switchBlock)) return; + if (!PsiUtil.isAvailable(JavaFeature.PATTERNS_IN_SWITCH, switchBlock)) return; PsiCodeBlock body = switchBlock.getBody(); if (body == null) return; PsiExpression selector = switchBlock.getExpression(); diff --git a/java/java-impl/src/com/siyeh/ig/fixes/IntroduceHolderFix.java b/java/java-impl/src/com/siyeh/ig/fixes/IntroduceHolderFix.java index 48cfadfa904c..9dc1869b7f6a 100644 --- a/java/java-impl/src/com/siyeh/ig/fixes/IntroduceHolderFix.java +++ b/java/java-impl/src/com/siyeh/ig/fixes/IntroduceHolderFix.java @@ -113,7 +113,7 @@ public class IntroduceHolderFix extends PsiUpdateModCommandQuickFix { final PsiModifierList modifierList = newField.getModifierList(); assert modifierList != null; modifierList.setModifierProperty(PsiModifier.FINAL, true); - if (!JavaFeature.NESTMATES.isAvailable(holderClass)) { + if (!PsiUtil.isAvailable(JavaFeature.NESTMATES, holderClass)) { modifierList.setModifierProperty(PsiModifier.PACKAGE_LOCAL, true); } newField.setInitializer(rhs); diff --git a/java/java-impl/src/com/siyeh/ig/memory/AnonymousInnerClassMayBeStaticInspection.java b/java/java-impl/src/com/siyeh/ig/memory/AnonymousInnerClassMayBeStaticInspection.java index e6f73f962762..5a726aa6ebb9 100644 --- a/java/java-impl/src/com/siyeh/ig/memory/AnonymousInnerClassMayBeStaticInspection.java +++ b/java/java-impl/src/com/siyeh/ig/memory/AnonymousInnerClassMayBeStaticInspection.java @@ -57,7 +57,7 @@ public final class AnonymousInnerClassMayBeStaticInspection extends BaseInspecti if (anonymousClass instanceof PsiEnumConstantInitializer) { return; } - if (JavaFeature.INNER_NOT_CAPTURE_THIS.isAvailable(anonymousClass) && + if (PsiUtil.isAvailable(JavaFeature.INNER_NOT_CAPTURE_THIS, anonymousClass) && !InheritanceUtil.isInheritor(anonymousClass, CommonClassNames.JAVA_IO_SERIALIZABLE)) { // Since Java 18, non-serializable anonymous classes don't capture 'this' reference return; 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 0ce325a6d50d..b1c90583c716 100644 --- a/java/java-impl/src/com/siyeh/ig/memory/InnerClassMayBeStaticInspection.java +++ b/java/java-impl/src/com/siyeh/ig/memory/InnerClassMayBeStaticInspection.java @@ -178,7 +178,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 (!JavaFeature.INNER_STATICS.isAvailable(aClass)) { + if (!PsiUtil.isAvailable(JavaFeature.INNER_STATICS, 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 ec53af7482dd..4112baa59060 100644 --- a/java/java-impl/src/com/siyeh/ig/migration/IfCanBeSwitchInspection.java +++ b/java/java-impl/src/com/siyeh/ig/migration/IfCanBeSwitchInspection.java @@ -109,7 +109,7 @@ public final class IfCanBeSwitchInspection extends BaseInspection { return; } ifStatement = concatenateIfStatements(ifStatement); - if (JavaFeature.PATTERNS_IN_SWITCH.isAvailable(ifStatement)) { + if (PsiUtil.isAvailable(JavaFeature.PATTERNS_IN_SWITCH, ifStatement)) { for (PsiIfStatement ifStatementInChain : getAllConditionalBranches(ifStatement)) { replaceCastsWithPatternVariable(ifStatementInChain); } @@ -319,7 +319,7 @@ public final class IfCanBeSwitchInspection extends BaseInspection { branches.add(new IfStatementBranch(new PsiEmptyStatementImpl(), true)); } } - if (JavaFeature.PATTERNS_IN_SWITCH.isAvailable(switchExpression)){ + if (PsiUtil.isAvailable(JavaFeature.PATTERNS_IN_SWITCH, 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 +349,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 (JavaFeature.ENHANCED_SWITCH.isAvailable(replacement)) { + if (PsiUtil.isAvailable(JavaFeature.ENHANCED_SWITCH, replacement)) { final EnhancedSwitchMigrationInspection.SwitchReplacer replacer = EnhancedSwitchMigrationInspection.findSwitchReplacer(replacement); if (replacer != null) { replacer.replace(replacement); @@ -674,7 +674,7 @@ public final class IfCanBeSwitchInspection extends BaseInspection { return false; } Nullability nullability = getNullability(switchExpression); - if (JavaFeature.PATTERNS_IN_SWITCH.isAvailable(switchExpression) && !ClassUtils.isPrimitive(switchExpression.getType())) { + if (PsiUtil.isAvailable(JavaFeature.PATTERNS_IN_SWITCH, 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 cb1c3419f5fb..6f8cebfd93a0 100644 --- a/java/java-impl/src/com/siyeh/ig/performance/FieldMayBeStaticInspection.java +++ b/java/java-impl/src/com/siyeh/ig/performance/FieldMayBeStaticInspection.java @@ -89,7 +89,7 @@ public final class FieldMayBeStaticInspection extends BaseInspection { if (containingClass != null && !containingClass.hasModifierProperty(PsiModifier.STATIC) && containingClass.getContainingClass() != null - && !JavaFeature.INNER_STATICS.isAvailable(containingClass) + && !PsiUtil.isAvailable(JavaFeature.INNER_STATICS, containingClass) && !PsiUtil.isCompileTimeConstant(field)) { // inner class cannot have static declarations in earlier Java versions return; @@ -98,7 +98,7 @@ public final class FieldMayBeStaticInspection extends BaseInspection { return; } if (containingClass instanceof PsiAnonymousClass && - !JavaFeature.INNER_STATICS.isAvailable(containingClass) && + !PsiUtil.isAvailable(JavaFeature.INNER_STATICS, 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 5fc20b404a17..1835d013fa7b 100644 --- a/java/java-impl/src/com/siyeh/ig/performance/MethodMayBeStaticInspection.java +++ b/java/java-impl/src/com/siyeh/ig/performance/MethodMayBeStaticInspection.java @@ -26,6 +26,7 @@ import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.impl.FindSuperElementsHelper; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.refactoring.JavaRefactoringFactory; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; @@ -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() && - !JavaFeature.INNER_STATICS.isAvailable(scope)) { + !PsiUtil.isAvailable(JavaFeature.INNER_STATICS, 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 3545b780c2f7..ee03774804f1 100644 --- a/java/java-impl/src/com/siyeh/ig/redundancy/RedundantEmbeddedExpressionInspection.java +++ b/java/java-impl/src/com/siyeh/ig/redundancy/RedundantEmbeddedExpressionInspection.java @@ -14,6 +14,7 @@ import com.intellij.psi.*; import com.intellij.psi.impl.source.tree.java.PsiEmptyExpressionImpl; import com.intellij.psi.util.JavaPsiStringTemplateUtil; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.util.ArrayUtil; import com.intellij.util.ObjectUtils; import com.siyeh.InspectionGadgetsBundle; @@ -24,7 +25,7 @@ import org.jetbrains.annotations.Nullable; public final class RedundantEmbeddedExpressionInspection extends AbstractBaseJavaLocalInspectionTool implements CleanupLocalInspectionTool { @Override public @NotNull PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.STRING_TEMPLATES.isAvailable(holder.getFile())) return PsiElementVisitor.EMPTY_VISITOR; + if (!PsiUtil.isAvailable(JavaFeature.STRING_TEMPLATES, 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 1992e5493b68..cdc2e8696e90 100644 --- a/java/java-impl/src/com/siyeh/ig/redundancy/RedundantStringOperationInspection.java +++ b/java/java-impl/src/com/siyeh/ig/redundancy/RedundantStringOperationInspection.java @@ -152,7 +152,7 @@ public final class RedundantStringOperationInspection extends AbstractBaseJavaLo @Override public void visitTemplateExpression(@NotNull PsiTemplateExpression element) { - if (!JavaFeature.STRING_TEMPLATES.isAvailable(element) || element.getLiteralExpression() == null) { + if (!PsiUtil.isAvailable(JavaFeature.STRING_TEMPLATES, element) || element.getLiteralExpression() == null) { return; } PsiExpression processor = element.getProcessor(); diff --git a/java/java-impl/src/com/siyeh/ipp/collections/ReplaceWithArraysAsListIntention.java b/java/java-impl/src/com/siyeh/ipp/collections/ReplaceWithArraysAsListIntention.java index 5a1649607144..e546a676f25f 100644 --- a/java/java-impl/src/com/siyeh/ipp/collections/ReplaceWithArraysAsListIntention.java +++ b/java/java-impl/src/com/siyeh/ipp/collections/ReplaceWithArraysAsListIntention.java @@ -10,6 +10,7 @@ import com.intellij.modcommand.ActionContext; import com.intellij.modcommand.Presentation; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; +import com.intellij.psi.util.PsiUtil; import com.intellij.util.containers.ContainerUtil; import com.siyeh.IntentionPowerPackBundle; import com.siyeh.ig.PsiReplacementUtil; @@ -83,12 +84,12 @@ public final class ReplaceWithArraysAsListIntention extends MCIntention { private static String getReplacementMethodText(String methodName, PsiMethodCallExpression context) { final PsiExpression[] arguments = context.getArgumentList().getExpressions(); if (methodName.equals("emptyList") && arguments.length == 1 && - !JavaFeature.COLLECTION_FACTORIES.isAvailable(context) && ClassUtils.findClass("com.google.common.collect.ImmutableList", context) == null) { + !PsiUtil.isAvailable(JavaFeature.COLLECTION_FACTORIES, context) && ClassUtils.findClass("com.google.common.collect.ImmutableList", context) == null) { return "java.util.Collections.singletonList"; } if (methodName.equals("emptyList") || methodName.equals("singletonList")) { if (!ContainerUtil.exists(arguments, ReplaceWithArraysAsListIntention::isPossiblyNull)) { - if (JavaFeature.COLLECTION_FACTORIES.isAvailable(context)) { + if (PsiUtil.isAvailable(JavaFeature.COLLECTION_FACTORIES, context)) { return "java.util.List.of"; } else if (ClassUtils.findClass("com.google.common.collect.ImmutableList", context) != null) { @@ -98,7 +99,7 @@ public final class ReplaceWithArraysAsListIntention extends MCIntention { return "java.util.Arrays.asList"; } if (methodName.equals("emptySet") || methodName.equals("singleton")) { - if (JavaFeature.COLLECTION_FACTORIES.isAvailable(context)) { + if (PsiUtil.isAvailable(JavaFeature.COLLECTION_FACTORIES, context)) { return "java.util.Set.of"; } else if (ClassUtils.findClass("com.google.common.collect.ImmutableSet", context) != null) { @@ -106,7 +107,7 @@ public final class ReplaceWithArraysAsListIntention extends MCIntention { } } else if (methodName.equals("emptyMap") || methodName.equals("singletonMap")) { - if (JavaFeature.COLLECTION_FACTORIES.isAvailable(context)) { + if (PsiUtil.isAvailable(JavaFeature.COLLECTION_FACTORIES, context)) { return "java.util.Map.of"; } else if (ClassUtils.findClass("com.google.common.collect.ImmutableMap", context) != null) { 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 088825b8e153..0e76c8f8984a 100644 --- a/java/java-impl/src/com/siyeh/ipp/concatenation/ReplaceConcatenationWithFormatStringIntention.java +++ b/java/java-impl/src/com/siyeh/ipp/concatenation/ReplaceConcatenationWithFormatStringIntention.java @@ -6,6 +6,7 @@ import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.util.PsiConcatenationUtil; import com.intellij.psi.util.PsiLiteralUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.util.containers.ContainerUtil; import com.siyeh.IntentionPowerPackBundle; import com.siyeh.ig.PsiReplacementUtil; @@ -53,7 +54,7 @@ public final class ReplaceConcatenationWithFormatStringIntention extends MCInten } CommentTracker commentTracker = new CommentTracker(); final StringBuilder newExpression = new StringBuilder(); - if (JavaFeature.TEXT_BLOCKS.isAvailable(element)) { + if (PsiUtil.isAvailable(JavaFeature.TEXT_BLOCKS, 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(JavaFeature.TEXT_BLOCKS.isAvailable(element) + return IntentionPowerPackBundle.message(PsiUtil.isAvailable(JavaFeature.TEXT_BLOCKS, 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 b34fee60b7e6..43ae2cb7b6fc 100644 --- a/java/java-impl/src/com/siyeh/ipp/switchbranches/CreateMissingSwitchBranchesAction.java +++ b/java/java-impl/src/com/siyeh/ipp/switchbranches/CreateMissingSwitchBranchesAction.java @@ -39,7 +39,7 @@ public final class CreateMissingSwitchBranchesAction extends PsiUpdateModCommand @Override protected void invoke(@NotNull ActionContext context, @NotNull PsiSwitchBlock block, @NotNull ModPsiUpdater updater) { - if (block instanceof PsiSwitchExpression && !JavaFeature.SWITCH_EXPRESSION.isAvailable(block)) { + if (block instanceof PsiSwitchExpression && !PsiUtil.isAvailable(JavaFeature.SWITCH_EXPRESSION, block)) { // Do not suggest if switch expression is not supported as we may generate unparseable code with 'yield' statement return; } diff --git a/java/java-psi-api/src/com/intellij/pom/java/JavaFeature.java b/java/java-psi-api/src/com/intellij/pom/java/JavaFeature.java index 8ce72f5d5183..f43a5c38536e 100644 --- a/java/java-psi-api/src/com/intellij/pom/java/JavaFeature.java +++ b/java/java-psi-api/src/com/intellij/pom/java/JavaFeature.java @@ -3,9 +3,6 @@ package com.intellij.pom.java; import com.intellij.core.JavaPsiBundle; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; -import com.intellij.psi.util.PsiUtil; -import com.intellij.util.ThreeState; import org.jetbrains.annotations.*; /** @@ -168,20 +165,10 @@ public enum JavaFeature { } /** - * @param element a valid PsiElement to check (it's better to supply PsiFile if already known; any element is accepted for convenience) - * @return true if this feature is available in the PsiFile the supplied element belongs to + * @return true if the availability of this feature can be additionally filtered using {@link LanguageFeatureProvider}. */ - public boolean isAvailable(@NotNull PsiElement element) { - if (!isSufficient(PsiUtil.getLanguageLevel(element))) return false; - if (!myCanBeCustomized) return true; - PsiFile file = element.getContainingFile(); - if (file == null) return true; - for (LanguageFeatureProvider extension : LanguageFeatureProvider.EXTENSION_POINT_NAME.getExtensionList()) { - ThreeState threeState = extension.isFeatureSupported(this, file); - if (threeState != ThreeState.UNSURE) - return threeState.toBoolean(); - } - return true; + public boolean canBeCustomized() { + return myCanBeCustomized; } public boolean isSufficient(@NotNull LanguageLevel useSiteLevel) { diff --git a/java/java-psi-api/src/com/intellij/psi/impl/source/resolve/graphInference/PsiPolyExpressionUtil.java b/java/java-psi-api/src/com/intellij/psi/impl/source/resolve/graphInference/PsiPolyExpressionUtil.java index bfc4d02188a8..45903f4de1c9 100644 --- a/java/java-psi-api/src/com/intellij/psi/impl/source/resolve/graphInference/PsiPolyExpressionUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/impl/source/resolve/graphInference/PsiPolyExpressionUtil.java @@ -106,7 +106,7 @@ public final class PsiPolyExpressionUtil { } private static boolean isVarContext(PsiVariable variable) { - if (JavaFeature.LVTI.isAvailable(variable)) { + if (PsiUtil.isAvailable(JavaFeature.LVTI, variable)) { PsiTypeElement typeElement = variable.getTypeElement(); if (typeElement != null && typeElement.isInferredType()) { return true; diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiTypesUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiTypesUtil.java index 558aa0f7cafe..07f910a9517d 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PsiTypesUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PsiTypesUtil.java @@ -146,12 +146,12 @@ public final class PsiTypesUtil { case CommonClassNames.JAVA_LANG_DOUBLE: return "0.0"; case CommonClassNames.JAVA_UTIL_SET: - return JavaFeature.COLLECTION_FACTORIES.isAvailable(psiClass) ? "java.util.Set.of()" : "java.util.Collections.emptySet()"; + return PsiUtil.isAvailable(JavaFeature.COLLECTION_FACTORIES, psiClass) ? "java.util.Set.of()" : "java.util.Collections.emptySet()"; case CommonClassNames.JAVA_UTIL_COLLECTION: case CommonClassNames.JAVA_UTIL_LIST: - return JavaFeature.COLLECTION_FACTORIES.isAvailable(psiClass) ? "java.util.List.of()" : "java.util.Collections.emptyList()"; + return PsiUtil.isAvailable(JavaFeature.COLLECTION_FACTORIES, psiClass) ? "java.util.List.of()" : "java.util.Collections.emptyList()"; case CommonClassNames.JAVA_UTIL_MAP: - return JavaFeature.COLLECTION_FACTORIES.isAvailable(psiClass) ? "java.util.Map.of()" : "java.util.Collections.emptyMap()"; + return PsiUtil.isAvailable(JavaFeature.COLLECTION_FACTORIES, psiClass) ? "java.util.Map.of()" : "java.util.Collections.emptyMap()"; } } } diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java index f963d8758522..99e33e7a520c 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java @@ -16,6 +16,8 @@ import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.pom.java.JavaFeature; +import com.intellij.pom.java.LanguageFeatureProvider; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.infos.ClassCandidateInfo; @@ -28,6 +30,7 @@ import com.intellij.psi.search.ProjectScope; import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.TokenSet; import com.intellij.util.IncorrectOperationException; +import com.intellij.util.ThreeState; import com.intellij.util.TimeoutUtil; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.JBIterable; @@ -1068,9 +1071,33 @@ public final class PsiUtil extends PsiUtilCore { } /** - * @param element element to get Java language level for - * @return the language level. If {@linkplain LanguageLevel#isUnsupported() unsupported} language level + * @param feature feature to check + * @param element a valid PsiElement to check (it's better to supply PsiFile if already known; any element is accepted for convenience) + * @return true if the feature is available in the PsiFile the supplied element belongs to + */ + public static boolean isAvailable(@NotNull JavaFeature feature, @NotNull PsiElement element) { + if (!feature.isSufficient(getLanguageLevel(element))) return false; + if (!feature.canBeCustomized()) return true; + PsiFile file = element.getContainingFile(); + if (file == null) return true; + for (LanguageFeatureProvider extension : LanguageFeatureProvider.EXTENSION_POINT_NAME.getExtensionList()) { + ThreeState threeState = extension.isFeatureSupported(feature, file); + if (threeState != ThreeState.UNSURE) + return threeState.toBoolean(); + } + return true; + } + + /** + * Returns the element language level. If {@linkplain LanguageLevel#isUnsupported() unsupported} language level * is selected for project or module, this method returns the supported alias. + *

+ * Note that it's a rare case when one may need a language level. Usually, it's interesting to check + * whether a particular language feature is available at a given context. + * Consider using {@link #isAvailable(JavaFeature, PsiElement)} instead of this method. + * + * @param element element to get Java language level for + * @return the language level. */ @NotNull public static LanguageLevel getLanguageLevel(@NotNull PsiElement element) { diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/PsiDiamondTypeUtil.java b/java/java-psi-impl/src/com/intellij/psi/impl/PsiDiamondTypeUtil.java index 33ea6b527d6d..fb8eee75a3fc 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/PsiDiamondTypeUtil.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/PsiDiamondTypeUtil.java @@ -39,7 +39,7 @@ public final class PsiDiamondTypeUtil { final PsiNewExpression context, @Nullable final PsiType expectedType, boolean skipDiamonds) { - if (JavaFeature.DIAMOND_TYPES.isAvailable(context)) { + if (PsiUtil.isAvailable(JavaFeature.DIAMOND_TYPES, context)) { final PsiJavaCodeReferenceElement classReference = expression.getClassOrAnonymousClassReference(); if (classReference != null) { final PsiReferenceParameterList parameterList = classReference.getParameterList(); diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/PsiJavaParserFacadeImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/PsiJavaParserFacadeImpl.java index 48bc332a4dc5..d4e1eaad3c0c 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/PsiJavaParserFacadeImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/PsiJavaParserFacadeImpl.java @@ -267,7 +267,7 @@ public class PsiJavaParserFacadeImpl implements PsiJavaParserFacade { @Override public PsiJavaCodeReferenceElement createReferenceFromText(@NotNull String text, @Nullable PsiElement context) throws IncorrectOperationException { boolean isStaticImport = context instanceof PsiImportStaticStatement && !((PsiImportStaticStatement)context).isOnDemand(); - boolean mayHaveDiamonds = context instanceof PsiNewExpression && JavaFeature.DIAMOND_TYPES.isAvailable(context); + boolean mayHaveDiamonds = context instanceof PsiNewExpression && PsiUtil.isAvailable(JavaFeature.DIAMOND_TYPES, context); JavaParserUtil.ParserWrapper wrapper = isStaticImport ? STATIC_IMPORT_REF : mayHaveDiamonds ? DIAMOND_REF : REFERENCE; DummyHolder holder = DummyHolderFactory.createHolder(myManager, new JavaDummyElement(text, wrapper, level(context)), context); PsiElement element = SourceTreeToPsiMap.treeElementToPsi(holder.getTreeElement().getFirstChildNode()); diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiCatchSectionImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiCatchSectionImpl.java index fd67d23631ad..1b9a2d246673 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiCatchSectionImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiCatchSectionImpl.java @@ -76,7 +76,7 @@ public class PsiCatchSectionImpl extends CompositePsiElement implements PsiCatch PsiType declaredType = parameter.getType(); // When the thrown expression is an ... exception parameter Ej (parameter) of a catch clause Cj (this) ... - if (JavaFeature.MULTI_CATCH.isAvailable(parameter) && isCatchParameterEffectivelyFinal(parameter, getCatchBlock())) { + if (PsiUtil.isAvailable(JavaFeature.MULTI_CATCH, parameter) && isCatchParameterEffectivelyFinal(parameter, getCatchBlock())) { PsiTryStatement statement = getTryStatement(); // ... and the try block of the try statement which declares Cj (tryBlock) can throw T ... Collection thrownTypes = getThrownTypes(statement); diff --git a/java/typeMigration/src/com/intellij/refactoring/typeMigration/inspections/GuavaInspection.java b/java/typeMigration/src/com/intellij/refactoring/typeMigration/inspections/GuavaInspection.java index f9929e232c5a..7e1bbe7e5511 100644 --- a/java/typeMigration/src/com/intellij/refactoring/typeMigration/inspections/GuavaInspection.java +++ b/java/typeMigration/src/com/intellij/refactoring/typeMigration/inspections/GuavaInspection.java @@ -15,6 +15,7 @@ import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.GlobalSearchScopesCore; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiTypesUtil; +import com.intellij.psi.util.PsiUtil; import com.intellij.refactoring.typeMigration.TypeMigrationBundle; import com.intellij.refactoring.typeMigration.TypeMigrationProcessor; import com.intellij.refactoring.typeMigration.TypeMigrationRules; @@ -56,7 +57,7 @@ public final class GuavaInspection extends AbstractBaseJavaLocalInspectionTool { @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) { - if (!JavaFeature.STREAMS.isAvailable(holder.getFile())) { + if (!PsiUtil.isAvailable(JavaFeature.STREAMS, holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/jvm/jvm-analysis-impl/src/com/intellij/codeInspection/IllegalDependencyOnInternalPackageInspection.kt b/jvm/jvm-analysis-impl/src/com/intellij/codeInspection/IllegalDependencyOnInternalPackageInspection.kt index d340dd17183c..7250313a5a39 100644 --- a/jvm/jvm-analysis-impl/src/com/intellij/codeInspection/IllegalDependencyOnInternalPackageInspection.kt +++ b/jvm/jvm-analysis-impl/src/com/intellij/codeInspection/IllegalDependencyOnInternalPackageInspection.kt @@ -10,6 +10,7 @@ import com.intellij.psi.PsiClassOwner import com.intellij.psi.PsiElementVisitor import com.intellij.psi.PsiFile import com.intellij.psi.impl.light.LightJavaModule +import com.intellij.psi.util.PsiUtil class IllegalDependencyOnInternalPackageInspection : LocalInspectionTool() { override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): PsiElementVisitor = IllegalDependencyOnInternalPackage(holder) @@ -17,7 +18,7 @@ class IllegalDependencyOnInternalPackageInspection : LocalInspectionTool() { private class IllegalDependencyOnInternalPackage(private val holder: ProblemsHolder) : PsiElementVisitor() { override fun visitFile(file: PsiFile) { - if (!JavaFeature.MODULES.isAvailable(file) || JavaModuleGraphUtil.findDescriptorByElement(file) != null) return + if (!PsiUtil.isAvailable(JavaFeature.MODULES, file) || JavaModuleGraphUtil.findDescriptorByElement(file) != null) return DependenciesBuilder.analyzeFileDependencies(file) { place, dependency -> if (dependency !is PsiClass) return@analyzeFileDependencies val dependencyFile = dependency.containingFile diff --git a/jvm/jvm-analysis-impl/src/com/intellij/codeInspection/SerializableHasSerialVersionUidFieldInspection.kt b/jvm/jvm-analysis-impl/src/com/intellij/codeInspection/SerializableHasSerialVersionUidFieldInspection.kt index 1a75c566acd2..ed7e75137471 100644 --- a/jvm/jvm-analysis-impl/src/com/intellij/codeInspection/SerializableHasSerialVersionUidFieldInspection.kt +++ b/jvm/jvm-analysis-impl/src/com/intellij/codeInspection/SerializableHasSerialVersionUidFieldInspection.kt @@ -10,6 +10,7 @@ import com.intellij.lang.jvm.actions.expectedTypes import com.intellij.lang.jvm.actions.fieldRequest import com.intellij.pom.java.JavaFeature import com.intellij.psi.* +import com.intellij.psi.util.PsiUtil import com.siyeh.HardcodedMethodConstants import com.siyeh.ig.fixes.SerialVersionUIDBuilder import com.siyeh.ig.psiutils.SerializationUtils @@ -44,7 +45,7 @@ class SerializableHasSerialVersionUidFieldInspection : USerializableInspectionBa val serialUid = SerialVersionUIDBuilder.computeDefaultSUID(psiClass) val project = psiClass.project - val annotations = if (JavaFeature.SERIAL_ANNOTATION.isAvailable(psiClass)) { + val annotations = if (PsiUtil.isAvailable(JavaFeature.SERIAL_ANNOTATION, psiClass)) { listOf(annotationRequest("java.io.Serial")) } else emptyList() 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 bbfce55f40e3..3df48fe271c6 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 @@ -870,7 +870,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 (JavaFeature.TEXT_BLOCKS.isAvailable(literal)) { + if (com.intellij.psi.util.PsiUtil.isAvailable(JavaFeature.TEXT_BLOCKS, 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 c0db7aafadee..9c30217e2d25 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 @@ -11,6 +11,7 @@ import com.intellij.pom.java.JavaFeature import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile import com.intellij.psi.PsiJavaModule +import com.intellij.psi.util.PsiUtil import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.DiagnosticFactory import org.jetbrains.kotlin.idea.fe10.inspections.KotlinInspectionsFe10Bundle @@ -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 JavaFeature.MODULES.isAvailable(file) && + return PsiUtil.isAvailable(JavaFeature.MODULES, 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 f566512c1c59..66547cac5dfc 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 @@ -6,6 +6,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; +import com.intellij.psi.util.PsiUtil; import com.intellij.refactoring.IntroduceVariableUtil; import de.plushnikov.intellij.plugin.LombokBundle; import de.plushnikov.intellij.plugin.intention.valvar.AbstractValVarIntentionAction; @@ -29,7 +30,7 @@ public abstract class AbstractReplaceExplicitTypeWithVariableIntentionAction ext @Override public boolean isAvailableOnDeclarationStatement(PsiDeclarationStatement context) { - if (JavaFeature.LVTI.isAvailable(context)) { + if (PsiUtil.isAvailable(JavaFeature.LVTI, context)) { return false; } PsiElement[] declaredElements = context.getDeclaredElements();