mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
Postfix templates: remove only expression statements on expanding
(IDEA-187042)
This commit is contained in:
+5
-5
@@ -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
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
public class Foo {
|
||||
void m(boolean b) {
|
||||
String s1 = "";
|
||||
String s2 = s1.arg<caret>
|
||||
}
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
public class Foo {
|
||||
void m(boolean b) {
|
||||
String s1 = "";
|
||||
String s2 = functionCall(s1<caret>)
|
||||
}
|
||||
}
|
||||
+8
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user