diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightControlFlowUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightControlFlowUtil.java index f6269f9b56e6..60b233d4e32f 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightControlFlowUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightControlFlowUtil.java @@ -25,6 +25,7 @@ import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; import com.intellij.psi.controlFlow.*; +import com.intellij.psi.impl.PsiImplUtil; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.PsiMatcherImpl; import com.intellij.psi.util.PsiMatchers; @@ -433,7 +434,7 @@ public class HighlightControlFlowUtil { } else if (variable instanceof PsiParameter) { final PsiParameter parameter = (PsiParameter)variable; - return PsiUtil.isAssigned(parameter); + return PsiImplUtil.isAssigned(parameter); } else { return false; diff --git a/java/java-impl/src/com/intellij/psi/impl/PsiImplUtil.java b/java/java-impl/src/com/intellij/psi/impl/PsiImplUtil.java index 4b128cf8a827..8724eb5dc03d 100644 --- a/java/java-impl/src/com/intellij/psi/impl/PsiImplUtil.java +++ b/java/java-impl/src/com/intellij/psi/impl/PsiImplUtil.java @@ -39,10 +39,12 @@ import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.LocalSearchScope; import com.intellij.psi.search.PackageScope; import com.intellij.psi.search.SearchScope; +import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.PairFunction; +import com.intellij.util.Processor; import com.intellij.util.SmartList; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -439,4 +441,26 @@ public class PsiImplUtil { @NotNull PairFunction annotationCreator) { return annotationCreator.fun(value.getProject(), "@A(" + namePrefix + value.getText() + ")").getParameterList().getAttributes()[0]; } + + public static boolean isAssigned(final PsiParameter parameter) { + ParamWriteProcessor processor = new ParamWriteProcessor(); + ReferencesSearch.search(parameter, new LocalSearchScope(parameter.getDeclarationScope()), true).forEach(processor); + return processor.isWriteRefFound(); + } + + private static class ParamWriteProcessor implements Processor { + private volatile boolean myIsWriteRefFound = false; + public boolean process(PsiReference reference) { + final PsiElement element = reference.getElement(); + if (element instanceof PsiReferenceExpression && PsiUtil.isAccessedForWriting((PsiExpression)element)) { + myIsWriteRefFound = true; + return false; + } + return true; + } + + public boolean isWriteRefFound() { + return myIsWriteRefFound; + } + } } diff --git a/java/java-impl/src/com/intellij/usages/impl/rules/JavaUsageTypeProvider.java b/java/java-impl/src/com/intellij/usages/impl/rules/JavaUsageTypeProvider.java index 2c442e3b4530..8c8651a49f81 100644 --- a/java/java-impl/src/com/intellij/usages/impl/rules/JavaUsageTypeProvider.java +++ b/java/java-impl/src/com/intellij/usages/impl/rules/JavaUsageTypeProvider.java @@ -16,9 +16,9 @@ package com.intellij.usages.impl.rules; import com.intellij.psi.*; +import com.intellij.psi.impl.PsiImplUtil; import com.intellij.psi.impl.PsiSuperMethodImplUtil; import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.psi.util.PsiUtil; import com.intellij.util.Processor; import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; @@ -91,7 +91,7 @@ public class JavaUsageTypeProvider implements UsageTypeProvider { } for (PsiParameter parameter : parameters) { - if (PsiUtil.isAssigned(parameter)) return false; + if (PsiImplUtil.isAssigned(parameter)) return false; } return true; diff --git a/java/openapi/src/com/intellij/psi/util/PsiUtil.java b/java/openapi/src/com/intellij/psi/util/PsiUtil.java index 590eb3338761..d21fee46b4a6 100644 --- a/java/openapi/src/com/intellij/psi/util/PsiUtil.java +++ b/java/openapi/src/com/intellij/psi/util/PsiUtil.java @@ -654,28 +654,6 @@ public final class PsiUtil extends PsiUtilCore { : Collections.singletonList(typeElement); } - private static class ParamWriteProcessor implements Processor { - private volatile boolean myIsWriteRefFound = false; - public boolean process(PsiReference reference) { - final PsiElement element = reference.getElement(); - if (element instanceof PsiReferenceExpression && isAccessedForWriting((PsiExpression)element)) { - myIsWriteRefFound = true; - return false; - } - return true; - } - - public boolean isWriteRefFound() { - return myIsWriteRefFound; - } - } - - public static boolean isAssigned(final PsiParameter parameter) { - ParamWriteProcessor processor = new ParamWriteProcessor(); - ReferencesSearch.search(parameter, new LocalSearchScope(parameter.getDeclarationScope()), true).forEach(processor); - return processor.isWriteRefFound(); - } - public static void checkIsIdentifier(PsiManager manager, String text) throws IncorrectOperationException{ if (!JavaPsiFacade.getInstance(manager.getProject()).getNameHelper().isIdentifier(text)){ throw new IncorrectOperationException(PsiBundle.message("0.is.not.an.identifier", text) );