mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-13 09:19:13 +07:00
enable add import for inner classes (IDEA-183488)
This commit is contained in:
+7
-3
@@ -24,6 +24,7 @@ import com.intellij.codeInsight.intention.BaseElementAtCaretIntentionAction;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
@@ -76,7 +77,8 @@ public class AddSingleMemberStaticImportAction extends BaseElementAtCaretIntenti
|
||||
JavaResolveResult[] results = refExpr.multiResolve(false);
|
||||
for (JavaResolveResult result : results) {
|
||||
final PsiElement resolved = result.getElement();
|
||||
if (resolved instanceof PsiMember && ((PsiModifierListOwner)resolved).hasModifierProperty(PsiModifier.STATIC)) {
|
||||
if (resolved instanceof PsiMember && ((PsiModifierListOwner)resolved).hasModifierProperty(PsiModifier.STATIC) ||
|
||||
resolved instanceof PsiClass) {
|
||||
PsiClass aClass = getResolvedClass(element, (PsiMember)resolved);
|
||||
String qName = aClass != null ? aClass.getQualifiedName() : null;
|
||||
if (aClass != null &&
|
||||
@@ -256,7 +258,9 @@ public class AddSingleMemberStaticImportAction extends BaseElementAtCaretIntenti
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (referent == null || referent instanceof PsiMember && ((PsiMember)referent).hasModifierProperty(PsiModifier.STATIC)) {
|
||||
else if (referent == null ||
|
||||
referent instanceof PsiClass ||
|
||||
referent instanceof PsiMember && ((PsiMember)referent).hasModifierProperty(PsiModifier.STATIC)) {
|
||||
if (qualifierExpression instanceof PsiJavaCodeReferenceElement) {
|
||||
PsiElement aClass = ((PsiJavaCodeReferenceElement)qualifierExpression).resolve();
|
||||
if (aClass instanceof PsiVariable) {
|
||||
@@ -269,7 +273,7 @@ public class AddSingleMemberStaticImportAction extends BaseElementAtCaretIntenti
|
||||
catch (IncorrectOperationException e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
if (reference.resolve() != referent) {
|
||||
if (!Comparing.equal(reference.resolve(), referent)) {
|
||||
reference = rebind(reference, resolvedClass);
|
||||
}
|
||||
}
|
||||
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
|
||||
import foo.Foo;
|
||||
|
||||
class Test {
|
||||
void test() {
|
||||
Foo.B<caret>ar bar;
|
||||
}
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
|
||||
import foo.Foo;
|
||||
import foo.Foo.Bar;
|
||||
|
||||
class Test {
|
||||
void test() {
|
||||
Bar bar;
|
||||
}
|
||||
}
|
||||
+9
@@ -155,6 +155,15 @@ public class AddSingleStaticImportActionTest extends JavaCodeInsightFixtureTestC
|
||||
assertNull(intention);
|
||||
}
|
||||
|
||||
public void testNonStaticInnerClassImport() {
|
||||
myFixture.addClass("package foo; public class Foo {public class Bar {}}");
|
||||
myFixture.configureByFile(getTestName(false) + ".java");
|
||||
IntentionAction intention = myFixture.getAvailableIntention("Add import for 'foo.Foo.Bar'");
|
||||
assertNotNull(intention);
|
||||
myFixture.launchAction(intention);
|
||||
myFixture.checkResultByFile(getTestName(false) + "_after.java");
|
||||
}
|
||||
|
||||
public void testProhibitWhenMethodWithIdenticalSignatureAlreadyImportedFromAnotherClass() {
|
||||
myFixture.addClass("package foo; class Foo {public static void foo(int i){}}");
|
||||
myFixture.addClass("package foo; class Bar {public static void foo(int i){}}");
|
||||
|
||||
Reference in New Issue
Block a user