extract superclass: update references in jsp imports correctly (IDEA-79706)

This commit is contained in:
anna
2012-01-10 19:12:17 +01:00
parent 40f8079ff1
commit cfd22a6f66
2 changed files with 20 additions and 2 deletions
@@ -24,10 +24,10 @@ import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.searches.ReferencesSearch;
import com.intellij.psi.util.InheritanceUtil;
import com.intellij.psi.util.MethodSignatureUtil;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.refactoring.RefactoringBundle;
import com.intellij.refactoring.turnRefsToSuper.TurnRefsToSuperProcessorBase;
import com.intellij.refactoring.util.DocCommentPolicy;
import com.intellij.refactoring.util.RefactoringUtil;
import com.intellij.refactoring.util.classMembers.MemberInfo;
import com.intellij.usageView.UsageInfo;
import com.intellij.usageView.UsageViewDescriptor;
@@ -112,7 +112,7 @@ public abstract class ExtractSuperBaseProcessor extends TurnRefsToSuperProcessor
}
for (final PsiReference ref : refs) {
final PsiElement element = ref.getElement();
if (!canTurnToSuper(element) && PsiTreeUtil.getParentOfType(element, PsiImportStatement.class) == null) {
if (!canTurnToSuper(element) && !RefactoringUtil.inImportStatement(ref, element)) {
result.add(new BindToOldUsageInfo(element, ref, myClass));
}
}
@@ -923,6 +923,24 @@ public class RefactoringUtil {
return false;
}
public static boolean inImportStatement(PsiReference ref, PsiElement element) {
if (PsiTreeUtil.getParentOfType(element, PsiImportStatement.class) != null) return true;
final PsiFile containingFile = element.getContainingFile();
if (containingFile instanceof PsiJavaFile) {
final PsiImportList importList = ((PsiJavaFile)containingFile).getImportList();
if (importList != null) {
final TextRange refRange = ref.getRangeInElement().shiftRight(element.getTextRange().getStartOffset());
for (PsiImportStatementBase importStatementBase : importList.getAllImportStatements()) {
final TextRange textRange = importStatementBase.getTextRange();
if (textRange.contains(refRange)) {
return true;
}
}
}
}
return false;
}
public static interface ImplicitConstructorUsageVisitor {
void visitConstructor(PsiMethod constructor, PsiMethod baseConstructor);