add single static import: check method base class beforehand (IDEA-12607 )

This commit is contained in:
anna
2011-08-26 12:48:41 +02:00
parent 46b8dc747c
commit 6794da37dd
5 changed files with 66 additions and 3 deletions

View File

@@ -21,15 +21,14 @@ package com.intellij.codeInsight.intention.impl;
import com.intellij.codeInsight.CodeInsightBundle;
import com.intellij.codeInsight.CodeInsightUtilBase;
import com.intellij.codeInsight.intention.IntentionAction;
import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction;
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.*;
import com.intellij.psi.util.InheritanceUtil;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.refactoring.util.RefactoringUtil;
@@ -149,7 +148,7 @@ public class AddSingleMemberStaticImportAction extends PsiElementBaseIntentionAc
} else {
if (qualifierExpression instanceof PsiReferenceExpression) {
PsiElement aClass = ((PsiReferenceExpression)qualifierExpression).resolve();
if (aClass == ((PsiMember)resolved).getContainingClass()) {
if (aClass instanceof PsiClass && InheritanceUtil.isInheritorOrSelf((PsiClass)aClass, ((PsiMember)resolved).getContainingClass(), true)) {
boolean foundMemberByName = false;
if (referent instanceof PsiMember) {
final String memberName = ((PsiMember)referent).getName();

View File

@@ -0,0 +1,17 @@
// "Add on demand static import for 'test.GregorianCalendar'" "true"
package test;
import static test.GregorianCalendar.*;
public class Foo {
{
getInstance();
}
}
class Calendar {
public static final void getInstance() {}
}
class GregorianCalendar extends Calendar {
}

View File

@@ -0,0 +1,17 @@
// "Add static import for 'test.Calendar.getInstance'" "true"
package test;
import static test.Calendar.getInstance;
public class Foo {
{
getInstance();
}
}
class Calendar {
public static final void getInstance() {}
}
class GregorianCalendar extends Calendar {
}

View File

@@ -0,0 +1,15 @@
// "Add on demand static import for 'test.GregorianCalendar'" "true"
package test;
public class Foo {
{
<caret>GregorianCalendar.getInstance();
}
}
class Calendar {
public static final void getInstance() {}
}
class GregorianCalendar extends Calendar {
}

View File

@@ -0,0 +1,15 @@
// "Add static import for 'test.Calendar.getInstance'" "true"
package test;
public class Foo {
{
GregorianCalendar.get<caret>Instance();
}
}
class Calendar {
public static final void getInstance() {}
}
class GregorianCalendar extends Calendar {
}