diff options
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.java | 54 |
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, |