ExpressionUtil to be reused in ControlFlowUtil

This commit is contained in:
Anna.Kozlova
2018-01-11 19:31:43 +01:00
parent d4217688fa
commit 796d03edf9
11 changed files with 56 additions and 34 deletions
@@ -15,6 +15,7 @@
*/
package com.intellij.codeInsight.completion;
import com.intellij.codeInsight.ExpressionUtil;
import com.intellij.codeInsight.daemon.ImplicitUsageProvider;
import com.intellij.psi.*;
import com.intellij.psi.filters.ElementFilter;
@@ -68,7 +69,7 @@ class CheckInitialized implements ElementFilter {
}
PsiElement parent = element.getParent();
if (parent instanceof PsiReferenceExpression && !ExpressionUtils.isEffectivelyUnqualified((PsiReferenceExpression)parent)) {
if (parent instanceof PsiReferenceExpression && !ExpressionUtil.isEffectivelyUnqualified((PsiReferenceExpression)parent)) {
return Collections.emptySet();
}
@@ -103,7 +104,7 @@ class CheckInitialized implements ElementFilter {
@Override
public void visitAssignmentExpression(PsiAssignmentExpression expression) {
PsiExpression lExpression = expression.getLExpression();
if (lExpression instanceof PsiReferenceExpression && ExpressionUtils.isEffectivelyUnqualified((PsiReferenceExpression)lExpression)) {
if (lExpression instanceof PsiReferenceExpression && ExpressionUtil.isEffectivelyUnqualified((PsiReferenceExpression)lExpression)) {
PsiElement target = ((PsiReferenceExpression)lExpression).resolve();
if (target instanceof PsiField) {
if (expression.getTextRange().getStartOffset() < statement.getTextRange().getStartOffset()) {
@@ -25,6 +25,7 @@ import com.intellij.codeInsight.intention.impl.CreateClassDialog;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupElementBuilder;
import com.intellij.codeInsight.template.*;
import com.intellij.codeInsight.template.ExpressionUtil;
import com.intellij.ide.fileTemplates.FileTemplate;
import com.intellij.ide.fileTemplates.FileTemplateManager;
import com.intellij.ide.fileTemplates.FileTemplateUtil;
@@ -1,6 +1,7 @@
// 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;
import com.intellij.codeInsight.ExpressionUtil;
import com.intellij.codeInsight.NullableNotNullManager;
import com.intellij.codeInsight.intention.impl.StreamRefactoringUtil;
import com.intellij.codeInspection.dataFlow.DfaUtil;
@@ -664,13 +665,13 @@ public class SimplifyStreamApiCallChainsInspection extends AbstractBaseJavaLocal
}
static boolean isParentNegated(PsiMethodCallExpression methodCall) {
if (ExpressionUtils.isEffectivelyUnqualified(methodCall.getMethodExpression())) return false;
if (ExpressionUtil.isEffectivelyUnqualified(methodCall.getMethodExpression())) return false;
PsiElement parent = PsiUtil.skipParenthesizedExprUp(methodCall.getParent());
return parent instanceof PsiExpression && BoolUtils.isNegation((PsiExpression)parent);
}
static boolean isArgumentLambdaNegated(PsiMethodCallExpression methodCall) {
if (ExpressionUtils.isEffectivelyUnqualified(methodCall.getMethodExpression())) return false;
if (ExpressionUtil.isEffectivelyUnqualified(methodCall.getMethodExpression())) return false;
PsiExpression[] expressions = methodCall.getArgumentList().getExpressions();
if(expressions.length != 1) return false;
PsiExpression arg = expressions[0];
@@ -1650,7 +1651,7 @@ public class SimplifyStreamApiCallChainsInspection extends AbstractBaseJavaLocal
PsiMethodReferenceExpression methodRef = (PsiMethodReferenceExpression)arg;
if (COLLECTION_CONTAINS.methodReferenceMatches(methodRef) &&
!PsiMethodReferenceUtil.isStaticallyReferenced(methodRef) &&
!ExpressionUtils.isEffectivelyUnqualified(methodRef)) {
!ExpressionUtil.isEffectivelyUnqualified(methodRef)) {
return methodRef.getQualifierExpression();
}
}
@@ -1663,7 +1664,7 @@ public class SimplifyStreamApiCallChainsInspection extends AbstractBaseJavaLocal
PsiMethodCallExpression call = tryCast(expression, PsiMethodCallExpression.class);
if (COLLECTION_CONTAINS.test(call) &&
ExpressionUtils.isReferenceTo(call.getArgumentList().getExpressions()[0], parameter) &&
!ExpressionUtils.isEffectivelyUnqualified(call.getMethodExpression())) {
!ExpressionUtil.isEffectivelyUnqualified(call.getMethodExpression())) {
return call.getMethodExpression().getQualifierExpression();
}
}
@@ -1674,7 +1675,7 @@ public class SimplifyStreamApiCallChainsInspection extends AbstractBaseJavaLocal
@Nullable
private static PsiExpression extractLeft(PsiMethodCallExpression call) {
PsiMethodCallExpression qualifierCall = getQualifierMethodCall(call);
if (!COLLECTION_STREAM.test(qualifierCall) || ExpressionUtils.isEffectivelyUnqualified(qualifierCall.getMethodExpression())) {
if (!COLLECTION_STREAM.test(qualifierCall) || ExpressionUtil.isEffectivelyUnqualified(qualifierCall.getMethodExpression())) {
return null;
}
return PsiUtil.skipParenthesizedExprDown(qualifierCall.getMethodExpression().getQualifierExpression());
@@ -3,6 +3,7 @@ package com.intellij.refactoring.inline;
import com.intellij.codeInsight.AnnotationUtil;
import com.intellij.codeInsight.ChangeContextUtil;
import com.intellij.codeInsight.ExpressionUtil;
import com.intellij.codeInsight.daemon.impl.quickfix.RemoveUnusedVariableUtil;
import com.intellij.history.LocalHistory;
import com.intellij.history.LocalHistoryAction;
@@ -288,7 +289,7 @@ public class InlineMethodProcessor extends BaseRefactoringProcessor {
PsiUtil.getEnclosingStaticElement(element, targetContainingClass) != null)) {
targetContainingClasses.add(targetContainingClass);
}
else if (element instanceof PsiReferenceExpression && !ControlFlowUtil.isUnqualified((PsiReferenceExpression)element)) {
else if (element instanceof PsiReferenceExpression && !ExpressionUtil.isEffectivelyUnqualified((PsiReferenceExpression)element)) {
qualifiedCall = ((PsiReferenceExpression)element).getQualifierExpression();
}
}