mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 03:21:12 +07:00
[java] JavaFeature.OBJECTS_CLASS
GitOrigin-RevId: 99e54a5f42368279b20fca9388f420cd6e24dee2
This commit is contained in:
committed by
intellij-monorepo-bot
parent
d18c733fe1
commit
3ed2f12a89
@@ -5,7 +5,7 @@ import com.intellij.codeInspection.CommonQuickFixBundle;
|
||||
import com.intellij.modcommand.ModPsiUpdater;
|
||||
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.pom.java.JavaFeature;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
@@ -57,7 +57,7 @@ public final class ReplaceWithObjectsEqualsFix extends PsiUpdateModCommandQuickF
|
||||
@NotNull PsiReferenceExpression methodExpression) {
|
||||
if (!"equals".equals(methodExpression.getReferenceName()) ||
|
||||
call.getArgumentList().getExpressionCount() != 1 ||
|
||||
!PsiUtil.getLanguageLevel(call).isAtLeast(LanguageLevel.JDK_1_7)) {
|
||||
!PsiUtil.isAvailable(JavaFeature.OBJECTS_CLASS, call)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -17,10 +17,11 @@ package com.siyeh.ig.fixes;
|
||||
|
||||
import com.intellij.codeInsight.Nullability;
|
||||
import com.intellij.codeInsight.intention.PriorityAction;
|
||||
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
|
||||
import com.intellij.codeInspection.dataFlow.NullabilityUtil;
|
||||
import com.intellij.modcommand.ModPsiUpdater;
|
||||
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.pom.java.JavaFeature;
|
||||
import com.intellij.psi.JavaTokenType;
|
||||
import com.intellij.psi.PsiBinaryExpression;
|
||||
import com.intellij.psi.PsiElement;
|
||||
@@ -89,7 +90,7 @@ public final class EqualityToSafeEqualsFix extends PsiUpdateModCommandQuickFix i
|
||||
final String lhsText = tracker.text(lhs);
|
||||
final String rhsText = tracker.text(rhs);
|
||||
@NonNls final StringBuilder newExpression = new StringBuilder();
|
||||
if (PsiUtil.isLanguageLevel7OrHigher(expression) && ClassUtils.findClass("java.util.Objects", expression) != null) {
|
||||
if (PsiUtil.isAvailable(JavaFeature.OBJECTS_CLASS, expression) && ClassUtils.findClass("java.util.Objects", expression) != null) {
|
||||
if (JavaTokenType.NE.equals(expression.getOperationTokenType())) {
|
||||
newExpression.append('!');
|
||||
}
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.siyeh.ig.migration;
|
||||
|
||||
import com.intellij.codeInspection.*;
|
||||
import com.intellij.codeInspection.CleanupLocalInspectionTool;
|
||||
import com.intellij.codeInspection.CommonQuickFixBundle;
|
||||
import com.intellij.codeInspection.LocalQuickFix;
|
||||
import com.intellij.codeInspection.ProblemHighlightType;
|
||||
import com.intellij.codeInspection.options.OptPane;
|
||||
import com.intellij.modcommand.ModPsiUpdater;
|
||||
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.pom.java.JavaFeature;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
@@ -22,6 +26,8 @@ import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import static com.intellij.codeInspection.options.OptPane.checkbox;
|
||||
import static com.intellij.codeInspection.options.OptPane.pane;
|
||||
|
||||
@@ -84,8 +90,8 @@ public final class EqualsReplaceableByObjectsCallInspection extends BaseInspecti
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldInspect(@NotNull PsiFile file) {
|
||||
return PsiUtil.isLanguageLevel7OrHigher(file);
|
||||
public @NotNull Set<@NotNull JavaFeature> requiredFeatures() {
|
||||
return Set.of(JavaFeature.OBJECTS_CLASS);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -5,12 +5,13 @@ import com.intellij.codeInsight.Nullability;
|
||||
import com.intellij.codeInspection.AbstractBaseJavaLocalInspectionTool;
|
||||
import com.intellij.codeInspection.CommonQuickFixBundle;
|
||||
import com.intellij.codeInspection.ProblemsHolder;
|
||||
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
|
||||
import com.intellij.codeInspection.dataFlow.NullabilityUtil;
|
||||
import com.intellij.java.analysis.JavaAnalysisBundle;
|
||||
import com.intellij.modcommand.ModPsiUpdater;
|
||||
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.NlsSafe;
|
||||
import com.intellij.pom.java.JavaFeature;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
@@ -22,6 +23,7 @@ import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
import static com.intellij.psi.util.PsiPrecedenceUtil.EQUALITY_PRECEDENCE;
|
||||
import static com.intellij.psi.util.PsiPrecedenceUtil.METHOD_CALL_PRECEDENCE;
|
||||
@@ -30,12 +32,14 @@ public final class ObjectsEqualsCanBeSimplifiedInspection extends AbstractBaseJa
|
||||
private static final CallMatcher OBJECTS_EQUALS = CallMatcher.staticCall(
|
||||
CommonClassNames.JAVA_UTIL_OBJECTS, "equals").parameterCount(2);
|
||||
|
||||
@Override
|
||||
public @NotNull Set<@NotNull JavaFeature> requiredFeatures() {
|
||||
return Set.of(JavaFeature.OBJECTS_CLASS);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public PsiElementVisitor buildVisitor(@NotNull ProblemsHolder holder, boolean isOnTheFly) {
|
||||
if (!PsiUtil.isLanguageLevel7OrHigher(holder.getFile())) {
|
||||
return PsiElementVisitor.EMPTY_VISITOR;
|
||||
}
|
||||
return new JavaElementVisitor() {
|
||||
@Override
|
||||
public void visitMethodCallExpression(@NotNull PsiMethodCallExpression call) {
|
||||
|
||||
@@ -67,6 +67,7 @@ feature.try.with.resources=Try-with-resources
|
||||
feature.binary.literals=Binary literals
|
||||
feature.underscores.in.literals=Underscores in literals
|
||||
feature.string.switch=Strings in 'switch' statements
|
||||
feature.objects.class=java.util.Objects API
|
||||
feature.stream.and.optional.api=Stream and Optional API
|
||||
feature.advanced.collection.api=Lambda methods in collections
|
||||
feature.with.initial=ThreadLocal.withInitial()
|
||||
|
||||
@@ -28,6 +28,7 @@ public enum JavaFeature {
|
||||
BIN_LITERALS(LanguageLevel.JDK_1_7, "feature.binary.literals"),
|
||||
UNDERSCORES(LanguageLevel.JDK_1_7, "feature.underscores.in.literals"),
|
||||
STRING_SWITCH(LanguageLevel.JDK_1_7, "feature.string.switch"),
|
||||
OBJECTS_CLASS(LanguageLevel.JDK_1_7, "feature.objects.class"),
|
||||
STREAM_OPTIONAL(LanguageLevel.JDK_1_8, "feature.stream.and.optional.api", true),
|
||||
/**
|
||||
* java.util.Arrays.setAll, java.util.Collection#removeIf, java.util.List.sort(Comparator),
|
||||
|
||||
@@ -156,7 +156,7 @@ public final class DataFlowInspection extends DataFlowInspectionBase {
|
||||
}
|
||||
}
|
||||
|
||||
if (!alwaysNull && PsiUtil.isLanguageLevel7OrHigher(qualifier)) {
|
||||
if (!alwaysNull && PsiUtil.isAvailable(JavaFeature.OBJECTS_CLASS, qualifier)) {
|
||||
fixes.add(new SurroundWithRequireNonNullFix(qualifier));
|
||||
}
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ public class ConvertRecordToClassFix extends PsiUpdateModCommandAction<PsiElemen
|
||||
@Nullable
|
||||
public static PsiClass tryMakeRecord(@NotNull PsiElement element) {
|
||||
// We use java.util.Objects for code generation, but it's absent before Java 7
|
||||
if (!PsiUtil.isLanguageLevel7OrHigher(element)) return null;
|
||||
if (!PsiUtil.isAvailable(JavaFeature.OBJECTS_CLASS, element)) return null;
|
||||
PsiJavaFile maybeRecord = (PsiJavaFile)PsiFileFactory.getInstance(element.getProject())
|
||||
.createFileFromText("Dummy.java", JavaLanguage.INSTANCE, element.getText(), false, false);
|
||||
PsiUtil.FILE_LANGUAGE_LEVEL_KEY.set(maybeRecord, LanguageLevel.JDK_16);
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.siyeh.ig.asserttoif;
|
||||
|
||||
import com.intellij.modcommand.ModPsiUpdater;
|
||||
import com.intellij.codeInspection.LocalQuickFix;
|
||||
import com.intellij.modcommand.ModPsiUpdater;
|
||||
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.intellij.util.ArrayUtil;
|
||||
@@ -76,7 +77,7 @@ public final class IfCanBeAssertionInspection extends BaseInspection {
|
||||
if (condition == null || statement.getElseBranch() != null || getThrownNewException(statement.getThenBranch()) == null) {
|
||||
return;
|
||||
}
|
||||
final boolean isObjectsRequireNonNullAvailable = PsiUtil.isLanguageLevel7OrHigher(statement) &&
|
||||
final boolean isObjectsRequireNonNullAvailable = PsiUtil.isAvailable(JavaFeature.OBJECTS_CLASS, statement) &&
|
||||
ComparisonUtils.isNullComparison(condition) &&
|
||||
((PsiBinaryExpression)condition).getOperationTokenType() == JavaTokenType.EQEQ;
|
||||
registerStatementError(statement, isObjectsRequireNonNullAvailable, true);
|
||||
@@ -86,7 +87,7 @@ public final class IfCanBeAssertionInspection extends BaseInspection {
|
||||
public void visitMethodCallExpression(@NotNull PsiMethodCallExpression expression) {
|
||||
super.visitMethodCallExpression(expression);
|
||||
if (MATCHER.test(expression) && expression.getArgumentList().getExpressionCount() <= 2) { // for parametrized messages we don't suggest anything
|
||||
registerMethodCallError(expression, PsiUtil.isLanguageLevel7OrHigher(expression), false);
|
||||
registerMethodCallError(expression, PsiUtil.isAvailable(JavaFeature.OBJECTS_CLASS, expression), false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.intellij.modcommand.ModPsiUpdater;
|
||||
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.NlsSafe;
|
||||
import com.intellij.pom.java.JavaFeature;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
@@ -421,7 +422,7 @@ public final class RedundantCollectionOperationInspection extends AbstractBaseJa
|
||||
}
|
||||
|
||||
static RedundantCollectionOperationHandler handler(PsiMethodCallExpression call) {
|
||||
if(!PsiUtil.isLanguageLevel7OrHigher(call)) return null;
|
||||
if(!PsiUtil.isAvailable(JavaFeature.OBJECTS_CLASS, call)) return null;
|
||||
PsiMethodCallExpression qualifierCall = MethodCallUtils.getQualifierMethodCall(call);
|
||||
if (!SINGLETON.test(qualifierCall)) return null;
|
||||
return new SingletonContainsHandler();
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.intellij.codeInsight.Nullability;
|
||||
import com.intellij.codeInsight.NullabilityAnnotationInfo;
|
||||
import com.intellij.codeInsight.NullableNotNullManager;
|
||||
import com.intellij.codeInspection.util.IntentionName;
|
||||
import com.intellij.pom.java.JavaFeature;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
@@ -86,7 +87,7 @@ public final class ObjectsRequireNonNullIntention extends MCIntention {
|
||||
|
||||
@Override
|
||||
public boolean satisfiedBy(PsiElement element) {
|
||||
if (!PsiUtil.isLanguageLevel7OrHigher(element)) {
|
||||
if (!PsiUtil.isAvailable(JavaFeature.OBJECTS_CLASS, element)) {
|
||||
return false;
|
||||
}
|
||||
if (!(element instanceof PsiReferenceExpression referenceExpression)) {
|
||||
|
||||
Reference in New Issue
Block a user