mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
WrapObjectWithOptionalOfNullableFix: get nullability from common dataflow
This commit is contained in:
+3
-14
@@ -20,7 +20,7 @@ import com.intellij.codeInsight.daemon.QuickFixBundle;
|
||||
import com.intellij.codeInsight.intention.HighPriorityAction;
|
||||
import com.intellij.codeInsight.intention.IntentionAction;
|
||||
import com.intellij.codeInspection.LocalQuickFixAndIntentionActionOnPsiElement;
|
||||
import com.intellij.codeInspection.dataFlow.DfaPsiUtil;
|
||||
import com.intellij.codeInspection.dataFlow.NullabilityUtil;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
@@ -134,7 +134,7 @@ public class WrapObjectWithOptionalOfNullableFix extends MethodArgumentFix imple
|
||||
if (resolvedClass == null || !CommonClassNames.JAVA_UTIL_OPTIONAL.equals(resolvedClass.getQualifiedName())) return false;
|
||||
|
||||
final Collection<PsiType> values = resolve.getSubstitutor().getSubstitutionMap().values();
|
||||
if (values.size() == 0) return true;
|
||||
if (values.isEmpty()) return true;
|
||||
if (values.size() > 1) return false;
|
||||
final PsiType optionalTypeParameter = ContainerUtil.getFirstItem(values);
|
||||
if (optionalTypeParameter == null) return false;
|
||||
@@ -144,18 +144,7 @@ public class WrapObjectWithOptionalOfNullableFix extends MethodArgumentFix imple
|
||||
@NotNull
|
||||
private static PsiExpression getModifiedExpression(PsiExpression expression) {
|
||||
final Project project = expression.getProject();
|
||||
PsiModifierListOwner toCheckNullability = null;
|
||||
if (expression instanceof PsiMethodCallExpression) {
|
||||
toCheckNullability = ((PsiMethodCallExpression)expression).resolveMethod();
|
||||
}
|
||||
else if (expression instanceof PsiReferenceExpression) {
|
||||
final PsiElement resolved = ((PsiReferenceExpression)expression).resolve();
|
||||
if (resolved instanceof PsiModifierListOwner) {
|
||||
toCheckNullability = (PsiModifierListOwner)resolved;
|
||||
}
|
||||
}
|
||||
final Nullability nullability = toCheckNullability == null ? Nullability.NOT_NULL : DfaPsiUtil
|
||||
.getElementNullability(expression.getType(), toCheckNullability);
|
||||
final Nullability nullability = NullabilityUtil.getExpressionNullability(expression, true);
|
||||
String methodName = nullability == Nullability.NOT_NULL ? "of" : "ofNullable";
|
||||
final String newExpressionText = CommonClassNames.JAVA_UTIL_OPTIONAL + "." + methodName + "(" + expression.getText() + ")";
|
||||
return JavaPsiFacade.getElementFactory(project).createExpressionFromText(newExpressionText, expression);
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ public class Test {
|
||||
|
||||
void m() {
|
||||
long ll = 10;
|
||||
f(10, Optional.ofNullable(ll), 10);
|
||||
f(10, Optional.of(ll), 10);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user