summaryrefslogtreecommitdiff
path: root/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java')
-rw-r--r--java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java26
1 files changed, 8 insertions, 18 deletions
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 1112738c5464..8cc9d06aed04 100644
--- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java
+++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java
@@ -55,6 +55,7 @@ import com.intellij.util.NullableFunction;
import com.intellij.util.PairConsumer;
import com.intellij.util.PairFunction;
import com.intellij.util.containers.ContainerUtil;
+import com.siyeh.ig.psiutils.SideEffectChecker;
import gnu.trove.THashSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -606,21 +607,7 @@ public class JavaCompletionUtil {
}
public static boolean mayHaveSideEffects(@Nullable final PsiElement element) {
- if (element == null) return false;
- if (element instanceof PsiMethodCallExpression || element instanceof PsiNewExpression) return true;
- if (element instanceof PsiTypeCastExpression) {
- return mayHaveSideEffects(((PsiTypeCastExpression)element).getOperand());
- }
- if (element instanceof PsiArrayAccessExpression) {
- return mayHaveSideEffects(((PsiArrayAccessExpression)element).getArrayExpression());
- }
- if (element instanceof PsiJavaCodeReferenceElement) {
- return mayHaveSideEffects(((PsiJavaCodeReferenceElement)element).getQualifier());
- }
- if (element instanceof PsiParenthesizedExpression) {
- return mayHaveSideEffects(((PsiParenthesizedExpression)element).getExpression());
- }
- return true;
+ return element instanceof PsiExpression && SideEffectChecker.mayHaveSideEffects((PsiExpression)element);
}
public static void insertClassReference(@NotNull PsiClass psiClass, @NotNull PsiFile file, int offset) {
@@ -836,13 +823,16 @@ public class JavaCompletionUtil {
//need to shorten references in type argument list
public static void shortenReference(final PsiFile file, final int offset) throws IncorrectOperationException {
- final PsiDocumentManager manager = PsiDocumentManager.getInstance(file.getProject());
- manager.commitDocument(manager.getDocument(file));
+ Project project = file.getProject();
+ final PsiDocumentManager manager = PsiDocumentManager.getInstance(project);
+ Document document = manager.getDocument(file);
+ manager.commitDocument(document);
final PsiReference ref = file.findReferenceAt(offset);
if (ref != null) {
PsiElement element = ref.getElement();
if (element != null) {
- JavaCodeStyleManager.getInstance(file.getProject()).shortenClassReferences(element);
+ JavaCodeStyleManager.getInstance(project).shortenClassReferences(element);
+ PsiDocumentManager.getInstance(project).doPostponedOperationsAndUnblockDocument(document);
}
}
}