diff --git a/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/editable/JavaEditablePostfixTemplate.java b/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/editable/JavaEditablePostfixTemplate.java index 4eb2e5b58f6b..45c0eed96f43 100644 --- a/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/editable/JavaEditablePostfixTemplate.java +++ b/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/editable/JavaEditablePostfixTemplate.java @@ -10,13 +10,12 @@ import com.intellij.openapi.util.Condition; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiExpression; +import com.intellij.psi.PsiExpressionStatement; import com.intellij.psi.PsiFile; -import com.intellij.psi.PsiLiteralExpression; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; import com.intellij.refactoring.introduceVariable.IntroduceVariableBase; import com.intellij.util.Function; -import com.intellij.util.ObjectUtils; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; @@ -139,10 +138,11 @@ public class JavaEditablePostfixTemplate extends EditablePostfixTemplate { @NotNull @Override protected PsiElement getElementToRemove(@NotNull PsiElement element) { - if (element instanceof PsiLiteralExpression) { - return element; + PsiElement parent = element.getParent(); + if (parent instanceof PsiExpressionStatement) { + return parent; } - return ObjectUtils.notNull(element.getParent(), element); + return element; } @NotNull diff --git a/java/java-tests/testData/codeInsight/template/postfix/templates/arg/localVariable.java b/java/java-tests/testData/codeInsight/template/postfix/templates/arg/localVariable.java new file mode 100644 index 000000000000..70318ec490fe --- /dev/null +++ b/java/java-tests/testData/codeInsight/template/postfix/templates/arg/localVariable.java @@ -0,0 +1,6 @@ +public class Foo { + void m(boolean b) { + String s1 = ""; + String s2 = s1.arg + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/template/postfix/templates/arg/localVariable_after.java b/java/java-tests/testData/codeInsight/template/postfix/templates/arg/localVariable_after.java new file mode 100644 index 000000000000..76ca8c977368 --- /dev/null +++ b/java/java-tests/testData/codeInsight/template/postfix/templates/arg/localVariable_after.java @@ -0,0 +1,6 @@ +public class Foo { + void m(boolean b) { + String s1 = ""; + String s2 = functionCall(s1) + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/template/postfix/templates/ArgumentPostfixTemplateTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/template/postfix/templates/ArgumentPostfixTemplateTest.java index ba01e0621a94..5ef7a82844ff 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/template/postfix/templates/ArgumentPostfixTemplateTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/template/postfix/templates/ArgumentPostfixTemplateTest.java @@ -6,6 +6,14 @@ import org.jetbrains.annotations.NotNull; public class ArgumentPostfixTemplateTest extends PostfixTemplateTestCase { public void testSimple() { + doArgTest(); + } + + public void testLocalVariable() { + doArgTest(); + } + + private void doArgTest() { TemplateManagerImpl.setTemplateTesting(myFixture.getProject(), getTestRootDisposable()); myFixture.configureByFile(getTestName(true) + ".java"); myFixture.type("\tfunctionCall\t");