mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
allow to create field inside static inner class when outer class has the field with the same name (IDEA-71841)
This commit is contained in:
@@ -1168,6 +1168,9 @@ public class HighlightUtil {
|
||||
if (staticParent != null && isInstanceReference(place)) {
|
||||
QuickFixAction.registerQuickFixAction(errorResult, QUICK_FIX_FACTORY.createModifierListFix(staticParent, PsiModifier.STATIC, false, false));
|
||||
}
|
||||
if (place instanceof PsiReferenceExpression && refElement instanceof PsiField) {
|
||||
QuickFixAction.registerQuickFixAction(errorResult, new CreateFieldFromUsageFix((PsiReferenceExpression)place));
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isInstanceReference(PsiJavaCodeReferenceElement place) {
|
||||
|
||||
-6
@@ -22,7 +22,6 @@ import com.intellij.codeInsight.template.Template;
|
||||
import com.intellij.codeInsight.template.TemplateBuilderImpl;
|
||||
import com.intellij.codeInsight.template.TemplateEditingAdapter;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.command.undo.UndoUtil;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -32,7 +31,6 @@ import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.impl.source.codeStyle.CodeEditUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@@ -54,10 +52,6 @@ public class CreateFieldFromUsageFix extends CreateVarFromUsageFix {
|
||||
}
|
||||
|
||||
protected void invokeImpl(final PsiClass targetClass) {
|
||||
if (CreateFromUsageUtils.isValidReference(myReferenceExpression, true)) {
|
||||
return;
|
||||
}
|
||||
|
||||
final Project project = myReferenceExpression.getProject();
|
||||
PsiElementFactory factory = JavaPsiFacade.getInstance(project).getElementFactory();
|
||||
|
||||
|
||||
+2
-2
@@ -37,7 +37,7 @@ public abstract class CreateVarFromUsageFix extends CreateFromUsageBaseFix {
|
||||
|
||||
protected boolean isValidElement(PsiElement element) {
|
||||
PsiReferenceExpression expression = (PsiReferenceExpression) element;
|
||||
return CreateFromUsageUtils.isValidReference(expression, true);
|
||||
return CreateFromUsageUtils.isValidReference(expression, false);
|
||||
}
|
||||
|
||||
protected PsiElement getElement() {
|
||||
@@ -48,7 +48,7 @@ public abstract class CreateVarFromUsageFix extends CreateFromUsageBaseFix {
|
||||
if (parent instanceof PsiMethodCallExpression) return null;
|
||||
|
||||
if (myReferenceExpression.getReferenceNameElement() != null) {
|
||||
if (!CreateFromUsageUtils.isValidReference(myReferenceExpression, true)) {
|
||||
if (!CreateFromUsageUtils.isValidReference(myReferenceExpression, false)) {
|
||||
return myReferenceExpression;
|
||||
}
|
||||
}
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// "Create Field 'field'" "true"
|
||||
class A {
|
||||
String field;
|
||||
|
||||
static class Foo {
|
||||
private Object field<caret>;
|
||||
|
||||
Foo() {
|
||||
field;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
// "Create Field 'field'" "true"
|
||||
class A {
|
||||
String field;
|
||||
|
||||
static class Foo {
|
||||
Foo() {
|
||||
fie<caret>ld;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
@@ -18,6 +18,7 @@ public class CreateFieldFromUsageTest extends LightQuickFixTestCase{
|
||||
public void testParametericMethod() throws Exception { doSingleTest(); }
|
||||
public void testQualifyInner() throws Exception { doSingleTest(); }
|
||||
public void testTypeArgsFormatted() throws Exception { doSingleTest(); }
|
||||
public void testInsideStaticInnerClass() throws Exception { doSingleTest(); }
|
||||
|
||||
public void testSortByRelevance() throws Exception {
|
||||
new WriteCommandAction(getProject()) {
|
||||
|
||||
Reference in New Issue
Block a user