From ae4f3d96ecc2bb64c610b03ba86ef92336b4cc2d Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 21 Jul 2014 16:35:00 +0200 Subject: [PATCH] unwrap: adjust caret before RParenth (IDEA-127580) --- .../unwrap/JavaMethodParameterUnwrapper.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/unwrap/JavaMethodParameterUnwrapper.java b/java/java-impl/src/com/intellij/codeInsight/unwrap/JavaMethodParameterUnwrapper.java index ec771e43c073..1c1957bcf472 100644 --- a/java/java-impl/src/com/intellij/codeInsight/unwrap/JavaMethodParameterUnwrapper.java +++ b/java/java-impl/src/com/intellij/codeInsight/unwrap/JavaMethodParameterUnwrapper.java @@ -29,15 +29,23 @@ public class JavaMethodParameterUnwrapper extends JavaUnwrapper { super(""); } + private static PsiElement adjustElementToTheLeft(PsiElement element) { + if (element instanceof PsiJavaToken && ((PsiJavaToken)element).getTokenType() == JavaTokenType.RPARENTH) { + return element.getPrevSibling(); + } + return element; + } + @Override public String getDescription(PsiElement e) { - String text = e.getText(); + String text = adjustElementToTheLeft(e).getText(); if (text.length() > 20) text = text.substring(0, 17) + "..."; return CodeInsightBundle.message("unwrap.with.placeholder", text); } @Override public boolean isApplicableTo(PsiElement e) { + e = adjustElementToTheLeft(e); final PsiElement parent = e.getParent(); if (e instanceof PsiExpression){ if (parent instanceof PsiExpressionList) { @@ -62,6 +70,7 @@ public class JavaMethodParameterUnwrapper extends JavaUnwrapper { @Override public PsiElement collectAffectedElements(PsiElement e, List toExtract) { + e = adjustElementToTheLeft(e); super.collectAffectedElements(e, toExtract); return isTopLevelCall(e) ? e.getParent() : e.getParent().getParent(); } @@ -73,6 +82,7 @@ public class JavaMethodParameterUnwrapper extends JavaUnwrapper { @Override protected void doUnwrap(PsiElement element, Context context) throws IncorrectOperationException { + element = adjustElementToTheLeft(element); PsiElement methodCall = isTopLevelCall(element) ? element.getParent() : element.getParent().getParent(); final PsiElement extractedElement = isTopLevelCall(element) ? getArg(element) : element; context.extractElement(extractedElement, methodCall);