From cfd22a6f6644d3cc3669d06beb1727c0125100f4 Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 10 Jan 2012 18:45:42 +0100 Subject: [PATCH] extract superclass: update references in jsp imports correctly (IDEA-79706) --- .../ExtractSuperBaseProcessor.java | 4 ++-- .../refactoring/util/RefactoringUtil.java | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/extractSuperclass/ExtractSuperBaseProcessor.java b/java/java-impl/src/com/intellij/refactoring/extractSuperclass/ExtractSuperBaseProcessor.java index 4936626f0356..d4ba42cf52a6 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractSuperclass/ExtractSuperBaseProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/extractSuperclass/ExtractSuperBaseProcessor.java @@ -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)); } } diff --git a/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java b/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java index b1bef4267f30..9093461943bb 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java @@ -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);