mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-196951 Delete empty parenthesis when replacing a method call with a (constant) field reference
GitOrigin-RevId: 190dd5c4af0a50ce3019fd9bbefd386865e7e3f9
This commit is contained in:
committed by
intellij-monorepo-bot
parent
9dc70cc524
commit
e3367716c0
@@ -164,8 +164,7 @@ public class VariableLookupItem extends LookupItem<PsiVariable> implements Typed
|
||||
if (willBeImported()) {
|
||||
RangeMarker toDelete = JavaCompletionUtil.insertTemporary(context.getTailOffset(), document, " ");
|
||||
context.commitDocument();
|
||||
final PsiReferenceExpression
|
||||
ref = PsiTreeUtil.findElementOfClassAtOffset(context.getFile(), context.getStartOffset(), PsiReferenceExpression.class, false);
|
||||
PsiReferenceExpression ref = findReference(context, context.getStartOffset());
|
||||
if (ref != null) {
|
||||
if (ref.isQualified()) {
|
||||
return; // shouldn't happen, but sometimes we see exceptions because of this
|
||||
@@ -183,12 +182,12 @@ public class VariableLookupItem extends LookupItem<PsiVariable> implements Typed
|
||||
}
|
||||
}
|
||||
|
||||
PsiReferenceExpression ref = PsiTreeUtil.findElementOfClassAtOffset(context.getFile(), context.getTailOffset() - 1, PsiReferenceExpression.class, false);
|
||||
PsiReferenceExpression ref = findReference(context, context.getTailOffset() - 1);
|
||||
if (ref != null) {
|
||||
JavaCodeStyleManager.getInstance(context.getProject()).shortenClassReferences(ref);
|
||||
}
|
||||
|
||||
ref = PsiTreeUtil.findElementOfClassAtOffset(context.getFile(), context.getTailOffset() - 1, PsiReferenceExpression.class, false);
|
||||
ref = findReference(context, context.getTailOffset() - 1);
|
||||
PsiElement target = ref == null ? null : ref.resolve();
|
||||
if (target instanceof PsiLocalVariable || target instanceof PsiParameter) {
|
||||
makeFinalIfNeeded(context, (PsiVariable)target);
|
||||
@@ -218,6 +217,23 @@ public class VariableLookupItem extends LookupItem<PsiVariable> implements Typed
|
||||
document.insertString(ref.getTextRange().getStartOffset(), "!");
|
||||
}
|
||||
}
|
||||
else if (completionChar == Lookup.REPLACE_SELECT_CHAR) {
|
||||
removeEmptyCallParentheses(context);
|
||||
}
|
||||
}
|
||||
|
||||
private static void removeEmptyCallParentheses(@NotNull InsertionContext context) {
|
||||
PsiReferenceExpression ref = findReference(context, context.getTailOffset() - 1);
|
||||
if (ref != null && ref.getParent() instanceof PsiMethodCallExpression) {
|
||||
PsiExpressionList argList = ((PsiMethodCallExpression)ref.getParent()).getArgumentList();
|
||||
if (argList.getExpressionCount() == 0) {
|
||||
context.getDocument().deleteString(argList.getTextRange().getStartOffset(), argList.getTextRange().getEndOffset());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static PsiReferenceExpression findReference(@NotNull InsertionContext context, int offset) {
|
||||
return PsiTreeUtil.findElementOfClassAtOffset(context.getFile(), offset, PsiReferenceExpression.class, false);
|
||||
}
|
||||
|
||||
private static boolean isTernaryCondition(PsiReferenceExpression ref) {
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
public class Util {
|
||||
int goo(C c) {
|
||||
return c.VA<caret>getValue();
|
||||
}
|
||||
}
|
||||
|
||||
class C {
|
||||
static final int VALUE = 2;
|
||||
static int getValue() {}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
public class Util {
|
||||
int goo(C c) {
|
||||
return c.VALUE<caret>;
|
||||
}
|
||||
}
|
||||
|
||||
class C {
|
||||
static final int VALUE = 2;
|
||||
static int getValue() {}
|
||||
}
|
||||
+4
@@ -1916,4 +1916,8 @@ class Abc {
|
||||
myFixture.type('\n')
|
||||
myFixture.checkResult("class MyClass { MyClass<caret> }")
|
||||
}
|
||||
|
||||
void testRemoveParenthesesWhenReplacingEmptyCallWithConstant() {
|
||||
doTest('\t')
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user