From f995b33d86b6673a111de944aba77bce88d8c775 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 19 Apr 2018 19:40:43 +0300 Subject: [PATCH] AndroidLanguageFeatureProvider to remove "overridden" android inspections --- .../AnonymousHasLambdaAlternativeInspection.java | 4 ++-- .../java18api/Java8ListSortInspection.java | 4 ++-- .../StaticPseudoFunctionalStyleMethodInspection.java | 9 ++++++--- .../java18api/Java8ArraySetAllInspection.java | 4 ++-- .../java18api/Java8CollectionRemoveIfInspection.java | 4 ++-- .../java18api/Java8MapApiInspection.java | 4 ++-- .../java18api/Java8MapForEachInspection.java | 3 ++- .../streamMigration/StreamApiMigrationInspection.java | 3 ++- .../src/com/intellij/pom/java/JavaFeature.java | 11 ++++++++++- 9 files changed, 30 insertions(+), 16 deletions(-) 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 46022bdeb67a..713cbab9c442 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousHasLambdaAlternativeInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/AnonymousHasLambdaAlternativeInspection.java @@ -4,9 +4,9 @@ package com.intellij.codeInspection; import com.intellij.openapi.diagnostic.Logger; 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.PsiTreeUtil; -import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -44,7 +44,7 @@ public class AnonymousHasLambdaAlternativeInspection extends AbstractBaseJavaLoc @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) { - if (!PsiUtil.isLanguageLevel8OrHigher(holder.getFile())) { + if (!JavaFeature.THREAD_LOCAL_WITH_INITIAL.isFeatureSupported(holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { 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 7a50c72d0698..0e11e607fa39 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 @@ -7,9 +7,9 @@ import com.intellij.codeInspection.LocalQuickFix; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.codeInspection.ProblemsHolder; 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; @@ -22,7 +22,7 @@ public class Java8ListSortInspection extends AbstractBaseJavaLocalInspectionTool @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) { - if (!PsiUtil.isLanguageLevel8OrHigher(holder.getFile())) { + if (!JavaFeature.ADVANCED_COLLECTIONS_API.isFeatureSupported(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 48cc4f89fa3f..46919adebd70 100644 --- a/java/java-impl/src/com/intellij/codeInspection/java18StreamApi/StaticPseudoFunctionalStyleMethodInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/java18StreamApi/StaticPseudoFunctionalStyleMethodInspection.java @@ -1,14 +1,17 @@ // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.codeInspection.java18StreamApi; -import com.intellij.codeInspection.*; +import com.intellij.codeInspection.AbstractBaseJavaLocalInspectionTool; +import com.intellij.codeInspection.LocalQuickFix; +import com.intellij.codeInspection.ProblemDescriptor; +import com.intellij.codeInspection.ProblemsHolder; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.InvalidDataException; 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; import org.jetbrains.annotations.Nullable; @@ -42,7 +45,7 @@ public class StaticPseudoFunctionalStyleMethodInspection extends AbstractBaseJav @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) { - if (!PsiUtil.isLanguageLevel8OrHigher(holder.getFile())) { + if (!JavaFeature.STREAMS.isFeatureSupported(holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-impl/src/com/intellij/codeInspection/java18api/Java8ArraySetAllInspection.java b/java/java-impl/src/com/intellij/codeInspection/java18api/Java8ArraySetAllInspection.java index 675c9b0b56ca..3cfbbd5673b4 100644 --- a/java/java-impl/src/com/intellij/codeInspection/java18api/Java8ArraySetAllInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/java18api/Java8ArraySetAllInspection.java @@ -6,11 +6,11 @@ import com.intellij.codeInspection.util.LambdaGenerationUtil; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; 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.codeStyle.CodeStyleManager; import com.intellij.psi.codeStyle.JavaCodeStyleManager; -import com.intellij.psi.util.PsiUtil; import com.intellij.util.ObjectUtils; import com.siyeh.ig.psiutils.*; import org.jetbrains.annotations.Nls; @@ -27,7 +27,7 @@ public class Java8ArraySetAllInspection extends AbstractBaseJavaLocalInspectionT @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!PsiUtil.isLanguageLevel8OrHigher(holder.getFile())) { + if (!JavaFeature.ADVANCED_COLLECTIONS_API.isFeatureSupported(holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-impl/src/com/intellij/codeInspection/java18api/Java8CollectionRemoveIfInspection.java b/java/java-impl/src/com/intellij/codeInspection/java18api/Java8CollectionRemoveIfInspection.java index 4b76ba3743ab..8e1d2b0a70b6 100644 --- a/java/java-impl/src/com/intellij/codeInspection/java18api/Java8CollectionRemoveIfInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/java18api/Java8CollectionRemoveIfInspection.java @@ -7,13 +7,13 @@ import com.intellij.codeInspection.util.IteratorDeclaration; import com.intellij.codeInspection.util.LambdaGenerationUtil; 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.codeStyle.CodeStyleManager; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.codeStyle.SuggestedNameInfo; import com.intellij.psi.codeStyle.VariableKind; import com.intellij.psi.tree.IElementType; -import com.intellij.psi.util.PsiUtil; import com.siyeh.ig.psiutils.CommentTracker; import com.siyeh.ig.psiutils.ControlFlowUtils; import org.jetbrains.annotations.Nls; @@ -27,7 +27,7 @@ public class Java8CollectionRemoveIfInspection extends AbstractBaseJavaLocalInsp @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) { - if (!PsiUtil.isLanguageLevel8OrHigher(holder.getFile())) { + if (!JavaFeature.ADVANCED_COLLECTIONS_API.isFeatureSupported(holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-impl/src/com/intellij/codeInspection/java18api/Java8MapApiInspection.java b/java/java-impl/src/com/intellij/codeInspection/java18api/Java8MapApiInspection.java index 7fe6e13d9805..bfa5601e175a 100644 --- a/java/java-impl/src/com/intellij/codeInspection/java18api/Java8MapApiInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/java18api/Java8MapApiInspection.java @@ -8,12 +8,12 @@ import com.intellij.codeInspection.ui.MultipleCheckboxOptionsPanel; import com.intellij.codeInspection.util.LambdaGenerationUtil; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; +import com.intellij.pom.java.JavaFeature; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.psi.util.PsiUtil; import com.siyeh.ig.psiutils.*; import one.util.streamex.StreamEx; import org.jetbrains.annotations.Nls; @@ -64,7 +64,7 @@ public class Java8MapApiInspection extends AbstractBaseJavaLocalInspectionTool { @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) { - if (!PsiUtil.isLanguageLevel8OrHigher(holder.getFile())) { + if (!JavaFeature.ADVANCED_COLLECTIONS_API.isFeatureSupported(holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-impl/src/com/intellij/codeInspection/java18api/Java8MapForEachInspection.java b/java/java-impl/src/com/intellij/codeInspection/java18api/Java8MapForEachInspection.java index ccae441b2c3a..258b80cf9389 100644 --- a/java/java-impl/src/com/intellij/codeInspection/java18api/Java8MapForEachInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/java18api/Java8MapForEachInspection.java @@ -6,6 +6,7 @@ import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel; import com.intellij.codeInspection.util.LambdaGenerationUtil; import com.intellij.openapi.project.Project; 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.codeStyle.JavaCodeStyleManager; @@ -52,7 +53,7 @@ public class Java8MapForEachInspection extends AbstractBaseJavaLocalInspectionTo @NotNull @Override public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) { - if (!PsiUtil.isLanguageLevel8OrHigher(holder.getFile())) { + if (!JavaFeature.ADVANCED_COLLECTIONS_API.isFeatureSupported(holder.getFile())) { return PsiElementVisitor.EMPTY_VISITOR; } return new JavaElementVisitor() { diff --git a/java/java-impl/src/com/intellij/codeInspection/streamMigration/StreamApiMigrationInspection.java b/java/java-impl/src/com/intellij/codeInspection/streamMigration/StreamApiMigrationInspection.java index bf9b53725b24..680eae017b16 100644 --- a/java/java-impl/src/com/intellij/codeInspection/streamMigration/StreamApiMigrationInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/streamMigration/StreamApiMigrationInspection.java @@ -16,6 +16,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.FileIndexFacade; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.pom.java.JavaFeature; import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.*; import com.intellij.psi.controlFlow.*; @@ -92,7 +93,7 @@ public class StreamApiMigrationInspection extends AbstractBaseJavaLocalInspectio public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) { PsiFile file = holder.getFile(); VirtualFile virtualFile = file.getVirtualFile(); - if (!PsiUtil.isLanguageLevel8OrHigher(file) || virtualFile == null || + if (!JavaFeature.STREAMS.isFeatureSupported(file) || virtualFile == null || !FileIndexFacade.getInstance(holder.getProject()).isInSourceContent(virtualFile)) { return PsiElementVisitor.EMPTY_VISITOR; } 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 747d0cefe3ab..f223526adf06 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 @@ -15,7 +15,16 @@ import org.jetbrains.annotations.NotNull; public enum JavaFeature { MULTI_CATCH(LanguageLevel.JDK_1_7), - STREAMS(LanguageLevel.JDK_1_8); + STREAMS(LanguageLevel.JDK_1_8), + /** + * java.util.Arrays.setAll, java.util.Collection#removeIf, java.util.List.sort(Comparator), + * java.util.Map#putIfAbsent, java.util.Map#forEach + */ + ADVANCED_COLLECTIONS_API(LanguageLevel.JDK_1_8), + /** + * ThreadLocal.withInitial + */ + THREAD_LOCAL_WITH_INITIAL(LanguageLevel.JDK_1_8); private final LanguageLevel myMinLevel;