java: add import on inner class: disable if qualifier has provided type arguments (IDEA-267858)

GitOrigin-RevId: 9df069c5dd257e92bf549753256c42ecab98e5e4
This commit is contained in:
Anna Kozlova
2021-04-29 21:39:56 +00:00
committed by intellij-monorepo-bot
parent 5e3f62bb69
commit aef2cfb77a
3 changed files with 19 additions and 0 deletions
@@ -107,6 +107,13 @@ public class AddSingleMemberStaticImportAction extends BaseElementAtCaretIntenti
.createReferenceFromText(refNameElement.getText(), refExpr);
final PsiElement target = copy.resolve();
if (target != null && PsiTreeUtil.getParentOfType(target, PsiClass.class) != aClass) return null;
PsiElement qualifier = refExpr.getQualifier();
if (qualifier instanceof PsiJavaCodeReferenceElement) {
PsiReferenceParameterList parameterList = ((PsiJavaCodeReferenceElement)qualifier).getParameterList();
if (parameterList != null && parameterList.getTypeParameterElements().length > 0) {
return null;
}
}
}
return new ImportAvailability(qName + "." +refExpr.getReferenceName(), (PsiMember) resolved);
}
@@ -0,0 +1,7 @@
package foo;
class Outer<O> {
public abstract class Inner { }
final class FileLockingCallback extends Outer<String>.I<caret>nner { }
}
@@ -30,6 +30,11 @@ public class AddSingleStaticImportActionTest extends JavaCodeInsightFixtureTestC
doTest("Add import for 'foo.Class1.Inner2'");
}
public void testDisabledInsideParameterizedQualifierReference() {
myFixture.configureByFile(getTestName(false) + ".java");
assertNull(myFixture.getAvailableIntention("Add import for 'foo.Outer.Inner'"));
}
public void testWrongCandidateAfterImport() {
myFixture.addClass("package foo; class Empty {}"); //to ensure package is in the project
doTest("Add static import for 'foo.Test.X.test'");