summaryrefslogtreecommitdiff
path: root/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java')
-rw-r--r--java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java54
1 files changed, 3 insertions, 51 deletions
diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java b/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java
index 9f5ecb109fd5..5e008afb4797 100644
--- a/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java
+++ b/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java
@@ -45,7 +45,6 @@ import com.intellij.psi.util.*;
import com.intellij.util.Function;
import com.intellij.util.ObjectUtils;
import com.intellij.util.text.CharArrayUtil;
-import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -701,7 +700,7 @@ public abstract class JavaFoldingBuilderBase extends CustomFoldingBuilder implem
else if (element instanceof PsiComment) {
return settings.isCollapseEndOfLineComments();
}
- else if (isLiteralExpression(element)
+ else if (ParameterNameFoldingManager.isLiteralExpression(element)
&& element.getParent() instanceof PsiExpressionList
&& (element.getParent().getParent() instanceof PsiCallExpression
|| element.getParent().getParent() instanceof PsiAnonymousClass)) {
@@ -760,55 +759,8 @@ public abstract class JavaFoldingBuilderBase extends CustomFoldingBuilder implem
if (quick || !JavaCodeFoldingSettings.getInstance().isInlineParameterNamesForLiteralCallArguments()) {
return;
}
- PsiExpressionList callArgumentsList = expression.getArgumentList();
- if (callArgumentsList == null) {
- return;
- }
-
- PsiExpression[] callArguments = callArgumentsList.getExpressions();
- if (callArguments.length > 1) {
- PsiParameter[] parameters = null;
- boolean isResolved = false;
-
- for (int i = 0; i < callArguments.length; i++) {
- PsiExpression callArgument = callArguments[i];
-
- if (callArgument.getType() != null && isLiteralExpression(callArgument)) {
- if (!isResolved) {
- PsiMethod method = expression.resolveMethod();
- isResolved = true;
- if (method == null) {
- return;
- }
- parameters = method.getParameterList().getParameters();
- if (parameters.length != callArguments.length) {
- return;
- }
- }
-
- PsiParameter methodParam = parameters[i];
- if (TypeConversionUtil.isAssignable(methodParam.getType(), callArgument.getType())) {
- TextRange range = callArgument.getTextRange();
- String placeholderText = methodParam.getName() + ": " + callArgument.getText();
- foldElements.add(new NamedFoldingDescriptor(callArgument, range.getStartOffset(), range.getEndOffset(), null, placeholderText));
- }
- }
- }
- }
- }
-
- @Contract("null -> false")
- private static boolean isLiteralExpression(@Nullable PsiElement callArgument) {
- if (callArgument instanceof PsiLiteralExpression)
- return true;
-
- if (callArgument instanceof PsiPrefixExpression) {
- PsiPrefixExpression expr = (PsiPrefixExpression)callArgument;
- IElementType tokenType = expr.getOperationTokenType();
- return JavaTokenType.MINUS.equals(tokenType) && expr.getOperand() instanceof PsiLiteralExpression;
- }
-
- return false;
+ ParameterNameFoldingManager manager = new ParameterNameFoldingManager(expression);
+ foldElements.addAll(manager.buildDescriptors());
}
private boolean addClosureFolding(final PsiClass aClass, final Document document, final List<FoldingDescriptor> foldElements,