From 7df910cf9903c2983c16b796e1f5e0d06ae2d803 Mon Sep 17 00:00:00 2001 From: Kirill Safonov Date: Wed, 2 Sep 2009 18:53:34 +0400 Subject: [PATCH] analyze module conflicts when moving js static members + cosmetics --- .../NewParameterCollidesWithLocalUsageInfo.java | 4 ++-- .../InheritanceToDelegationProcessor.java | 4 ++-- .../refactoring/inline/InlineMethodProcessor.java | 2 +- .../IntroduceParameterProcessor.java | 2 +- .../introduceVariable/IntroduceVariableBase.java | 2 +- .../memberPullUp/PullUpConflictsUtil.java | 15 ++++++--------- .../memberPushDown/PushDownConflicts.java | 7 +++---- .../MoveClassesOrPackagesProcessor.java | 2 +- .../PackageLocalsUsageCollector.java | 3 ++- .../move/moveMembers/MoveMembersProcessor.java | 10 +++++----- .../rename/LocalHidesRenamedLocalUsageInfo.java | 4 ++-- .../rename/SubmemberHidesMemberUsageInfo.java | 4 ++-- .../intellij/refactoring/util/ConflictsUtil.java | 4 ---- .../refactoring/util/RefactoringUtil.java | 15 ++++----------- .../refactoring/util/CommonRefactoringUtil.java | 12 ++++++++++++ 15 files changed, 44 insertions(+), 46 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/NewParameterCollidesWithLocalUsageInfo.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/NewParameterCollidesWithLocalUsageInfo.java index c93cfdb46d23..8af23079634a 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/NewParameterCollidesWithLocalUsageInfo.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/NewParameterCollidesWithLocalUsageInfo.java @@ -4,8 +4,8 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.rename.UnresolvableCollisionUsageInfo; -import com.intellij.refactoring.util.ConflictsUtil; import com.intellij.refactoring.util.RefactoringUIUtil; +import com.intellij.refactoring.util.CommonRefactoringUtil; /** * @author dsl @@ -26,6 +26,6 @@ public class NewParameterCollidesWithLocalUsageInfo extends UnresolvableCollisio RefactoringUIUtil.getDescription(myConflictingElement, true), RefactoringUIUtil.getDescription(myMethod, true)); - return ConflictsUtil.capitalize(buffer); + return CommonRefactoringUtil.capitalize(buffer); } } diff --git a/java/java-impl/src/com/intellij/refactoring/inheritanceToDelegation/InheritanceToDelegationProcessor.java b/java/java-impl/src/com/intellij/refactoring/inheritanceToDelegation/InheritanceToDelegationProcessor.java index 1cdaa0641f62..390a32127633 100644 --- a/java/java-impl/src/com/intellij/refactoring/inheritanceToDelegation/InheritanceToDelegationProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/inheritanceToDelegation/InheritanceToDelegationProcessor.java @@ -232,7 +232,7 @@ public class InheritanceToDelegationProcessor extends BaseRefactoringProcessor { if (container != null && !reportedContainers.contains(container)) { String message = RefactoringBundle.message("0.uses.1.of.an.instance.of.a.2", RefactoringUIUtil.getDescription(container, true), RefactoringUIUtil.getDescription(nonDelegatedMember, true), classDescription); - conflicts.add(ConflictsUtil.capitalize(message)); + conflicts.add(CommonRefactoringUtil.capitalize(message)); reportedContainers.add(container); } } @@ -248,7 +248,7 @@ public class InheritanceToDelegationProcessor extends BaseRefactoringProcessor { String message = RefactoringBundle.message("0.upcasts.an.instance.of.1.to.2", RefactoringUIUtil.getDescription(container, true), classDescription, RefactoringUIUtil.getDescription(upcastedTo, false)); - conflicts.add(ConflictsUtil.capitalize(message)); + conflicts.add(CommonRefactoringUtil.capitalize(message)); reportedContainers.add(container); } } diff --git a/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java index 184b2fc1ccfe..ffebc4e617a2 100644 --- a/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java @@ -151,7 +151,7 @@ public class InlineMethodProcessor extends BaseRefactoringProcessor { final String containerDescription = RefactoringUIUtil.getDescription(container, true); String message = RefactoringBundle.message("0.that.is.used.in.inlined.method.is.not.accessible.from.call.site.s.in.1", referencedDescription, containerDescription); - conflicts.add(ConflictsUtil.capitalize(message)); + conflicts.add(CommonRefactoringUtil.capitalize(message)); } } } diff --git a/java/java-impl/src/com/intellij/refactoring/introduceParameter/IntroduceParameterProcessor.java b/java/java-impl/src/com/intellij/refactoring/introduceParameter/IntroduceParameterProcessor.java index ef8fb14bea73..a58f43154592 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceParameter/IntroduceParameterProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceParameter/IntroduceParameterProcessor.java @@ -286,7 +286,7 @@ public class IntroduceParameterProcessor extends BaseRefactoringProcessor implem String descr = RefactoringBundle.message("there.is.already.a.0.it.will.conflict.with.an.introduced.parameter", RefactoringUIUtil.getDescription(variable, true)); - conflict = ConflictsUtil.capitalize(descr); + conflict = CommonRefactoringUtil.capitalize(descr); } } diff --git a/java/java-impl/src/com/intellij/refactoring/introduceVariable/IntroduceVariableBase.java b/java/java-impl/src/com/intellij/refactoring/introduceVariable/IntroduceVariableBase.java index af63fef01e21..21cfac30c29e 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceVariable/IntroduceVariableBase.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceVariable/IntroduceVariableBase.java @@ -698,7 +698,7 @@ public abstract class IntroduceVariableBase extends IntroduceHandlerBase impleme if (!modifiedInBody.isEmpty()) { for (PsiVariable variable : modifiedInBody) { final String message = RefactoringBundle.message("is.modified.in.loop.body", RefactoringUIUtil.getDescription(variable, false)); - conflicts.add(ConflictsUtil.capitalize(message)); + conflicts.add(CommonRefactoringUtil.capitalize(message)); } conflicts.add(RefactoringBundle.message("introducing.variable.may.break.code.logic")); } diff --git a/java/java-impl/src/com/intellij/refactoring/memberPullUp/PullUpConflictsUtil.java b/java/java-impl/src/com/intellij/refactoring/memberPullUp/PullUpConflictsUtil.java index 1bfa2ef302b0..d5ced0943fd9 100644 --- a/java/java-impl/src/com/intellij/refactoring/memberPullUp/PullUpConflictsUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/memberPullUp/PullUpConflictsUtil.java @@ -14,10 +14,7 @@ import com.intellij.psi.util.MethodSignatureUtil; import com.intellij.psi.util.PsiUtil; import com.intellij.psi.util.TypeConversionUtil; import com.intellij.refactoring.RefactoringBundle; -import com.intellij.refactoring.util.ConflictsUtil; -import com.intellij.refactoring.util.RefactoringHierarchyUtil; -import com.intellij.refactoring.util.RefactoringUIUtil; -import com.intellij.refactoring.util.RefactoringUtil; +import com.intellij.refactoring.util.*; import com.intellij.refactoring.util.classMembers.ClassMemberReferencesVisitor; import com.intellij.refactoring.util.classMembers.InterfaceContainmentVerifier; import com.intellij.refactoring.util.classMembers.MemberInfo; @@ -100,7 +97,7 @@ public class PullUpConflictsUtil { && !(member instanceof PsiClass && ((PsiClass)member).isInterface())) { String message = RefactoringBundle.message("0.is.not.static.it.cannot.be.moved.to.the.interface", RefactoringUIUtil.getDescription(member, false)); - message = ConflictsUtil.capitalize(message); + message = CommonRefactoringUtil.capitalize(message); conflictsList.add(message); } } @@ -108,7 +105,7 @@ public class PullUpConflictsUtil { if (member instanceof PsiField && ((PsiField)member).getInitializer() == null) { String message = RefactoringBundle.message("0.is.not.initialized.in.declaration.such.fields.are.not.allowed.in.interfaces", RefactoringUIUtil.getDescription(member, false)); - conflictsList.add(ConflictsUtil.capitalize(message)); + conflictsList.add(CommonRefactoringUtil.capitalize(message)); } } } @@ -135,7 +132,7 @@ public class PullUpConflictsUtil { String message = RefactoringBundle.message("0.already.contains.a.1", RefactoringUIUtil.getDescription(superClass, false), RefactoringUIUtil.getDescription(member, false)); - message = ConflictsUtil.capitalize(message); + message = CommonRefactoringUtil.capitalize(message); conflictsList.add(message); } } @@ -188,7 +185,7 @@ public class PullUpConflictsUtil { String message = RefactoringBundle.message("0.uses.1.which.is.not.accessible.from.the.superclass", RefactoringUIUtil.getDescription(myScope, false), RefactoringUIUtil.getDescription(classMember, true)); - message = ConflictsUtil.capitalize(message); + message = CommonRefactoringUtil.capitalize(message); myConflictsList.add(message); } @@ -199,7 +196,7 @@ public class PullUpConflictsUtil { String message = RefactoringBundle.message("0.uses.1.which.is.not.moved.to.the.superclass", RefactoringUIUtil.getDescription(myScope, false), RefactoringUIUtil.getDescription(classMember, true)); - message = ConflictsUtil.capitalize(message); + message = CommonRefactoringUtil.capitalize(message); myConflictsList.add(message); } } diff --git a/java/java-impl/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java b/java/java-impl/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java index 65c245ecbdc1..25d6dd13ad38 100644 --- a/java/java-impl/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java +++ b/java/java-impl/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java @@ -5,7 +5,6 @@ import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.InheritanceUtil; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.util.CommonRefactoringUtil; -import com.intellij.refactoring.util.ConflictsUtil; import com.intellij.refactoring.util.RefactoringUIUtil; import com.intellij.refactoring.util.classMembers.ClassMemberReferencesVisitor; import com.intellij.refactoring.util.classMembers.MemberInfo; @@ -87,7 +86,7 @@ public class PushDownConflicts { String name = movedMember.getName(); if (targetClass.findFieldByName(name, false) != null) { String message = RefactoringBundle.message("0.already.contains.field.1", RefactoringUIUtil.getDescription(targetClass, false), CommonRefactoringUtil.htmlEmphasize(name)); - myConflicts.add(ConflictsUtil.capitalize(message)); + myConflicts.add(CommonRefactoringUtil.capitalize(message)); } } else if (movedMember instanceof PsiMethod) { @@ -98,7 +97,7 @@ public class PushDownConflicts { if (targetClass.findMethodBySignature(method, false) != null) { String message = RefactoringBundle.message("0.is.already.overridden.in.1", RefactoringUIUtil.getDescription(method, true), RefactoringUIUtil.getDescription(targetClass, false)); - myConflicts.add(ConflictsUtil.capitalize(message)); + myConflicts.add(CommonRefactoringUtil.capitalize(message)); } } } @@ -130,7 +129,7 @@ public class PushDownConflicts { if(myMovedMembers.contains(classMember) && !myAbstractMembers.contains(classMember)) { String message = RefactoringBundle.message("0.uses.1.which.is.pushed.down", RefactoringUIUtil.getDescription(mySource, false), RefactoringUIUtil.getDescription(classMember, false)); - message = ConflictsUtil.capitalize(message); + message = CommonRefactoringUtil.capitalize(message); myConflicts.add(message); } } diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java index 165c0eeeda36..b0b1c1634e87 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java @@ -538,7 +538,7 @@ public class MoveClassesOrPackagesProcessor extends BaseRefactoringProcessor { if (!myTargetPackage.equalToPackage(aPackage)) { String message = RefactoringBundle.message("0.will.be.inaccessible.from.1", RefactoringUIUtil.getDescription(member, true), RefactoringUIUtil.getDescription(container, true)); - myConflicts.add(ConflictsUtil.capitalize(message)); + myConflicts.add(CommonRefactoringUtil.capitalize(message)); } } } diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/PackageLocalsUsageCollector.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/PackageLocalsUsageCollector.java index 585a6838a016..dee8266fe40e 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/PackageLocalsUsageCollector.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/PackageLocalsUsageCollector.java @@ -7,6 +7,7 @@ import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.util.ConflictsUtil; import com.intellij.util.VisibilityUtil; import com.intellij.refactoring.util.RefactoringUIUtil; +import com.intellij.refactoring.util.CommonRefactoringUtil; import com.intellij.util.containers.HashMap; import java.util.HashSet; @@ -55,7 +56,7 @@ class PackageLocalsUsageCollector extends JavaRecursiveElementWalkingVisitor { final String message = RefactoringBundle.message("0.uses.a.package.local.1", RefactoringUIUtil.getDescription(container, true), RefactoringUIUtil.getDescription(resolved, true)); - myConflicts.add(ConflictsUtil.capitalize(message)); + myConflicts.add(CommonRefactoringUtil.capitalize(message)); reportedRefs.add(container); } } diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveMembersProcessor.java b/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveMembersProcessor.java index 5e024479332b..aad5c48669ea 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveMembersProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveMembersProcessor.java @@ -305,7 +305,7 @@ public class MoveMembersProcessor extends BaseRefactoringProcessor { PsiMethod method = (PsiMethod)member; if (hasMethod(targetClass, method)) { String message = RefactoringBundle.message("0.already.exists.in.the.target.class", RefactoringUIUtil.getDescription(method, false)); - message = ConflictsUtil.capitalize(message); + message = CommonRefactoringUtil.capitalize(message); conflicts.add(message); } } @@ -313,7 +313,7 @@ public class MoveMembersProcessor extends BaseRefactoringProcessor { PsiField field = (PsiField)member; if (hasField(targetClass, field)) { String message = RefactoringBundle.message("0.already.exists.in.the.target.class", RefactoringUIUtil.getDescription(field, false)); - message = ConflictsUtil.capitalize(message); + message = CommonRefactoringUtil.capitalize(message); conflicts.add(message); } } @@ -352,7 +352,7 @@ public class MoveMembersProcessor extends BaseRefactoringProcessor { RefactoringUIUtil.getDescription(targetClass, true), VisibilityUtil.getVisibilityStringToDisplay(targetClass), RefactoringUIUtil.getDescription(ConflictsUtil.getContainer(ref), true)); - message = ConflictsUtil.capitalize(message); + message = CommonRefactoringUtil.capitalize(message); conflicts.add(message); } //check for member accessibility @@ -361,7 +361,7 @@ public class MoveMembersProcessor extends BaseRefactoringProcessor { RefactoringUIUtil.getDescription(member, true), VisibilityUtil.getVisibilityStringToDisplay(member), RefactoringUIUtil.getDescription(ConflictsUtil.getContainer(ref), true)); - message = ConflictsUtil.capitalize(message); + message = CommonRefactoringUtil.capitalize(message); conflicts.add(message); } } @@ -426,7 +426,7 @@ public class MoveMembersProcessor extends BaseRefactoringProcessor { RefactoringUIUtil.getDescription(refMember, true), VisibilityUtil.getVisibilityStringToDisplay(refMember), RefactoringUIUtil.getDescription(member, false)); - message = ConflictsUtil.capitalize(message); + message = CommonRefactoringUtil.capitalize(message); conflicts.add(message); } } diff --git a/java/java-impl/src/com/intellij/refactoring/rename/LocalHidesRenamedLocalUsageInfo.java b/java/java-impl/src/com/intellij/refactoring/rename/LocalHidesRenamedLocalUsageInfo.java index b445652cadbe..745e8a75f179 100644 --- a/java/java-impl/src/com/intellij/refactoring/rename/LocalHidesRenamedLocalUsageInfo.java +++ b/java/java-impl/src/com/intellij/refactoring/rename/LocalHidesRenamedLocalUsageInfo.java @@ -10,8 +10,8 @@ package com.intellij.refactoring.rename; import com.intellij.psi.PsiElement; import com.intellij.refactoring.RefactoringBundle; -import com.intellij.refactoring.util.ConflictsUtil; import com.intellij.refactoring.util.RefactoringUIUtil; +import com.intellij.refactoring.util.CommonRefactoringUtil; import com.intellij.usageView.UsageViewUtil; public class LocalHidesRenamedLocalUsageInfo extends UnresolvableCollisionUsageInfo { @@ -27,6 +27,6 @@ public class LocalHidesRenamedLocalUsageInfo extends UnresolvableCollisionUsageI final String descr = RefactoringBundle.message("there.is.already.a.0.it.will.conflict.with.the.renamed.1", RefactoringUIUtil.getDescription(myConflictingElement, true), UsageViewUtil.getType(getElement())); - return ConflictsUtil.capitalize(descr); + return CommonRefactoringUtil.capitalize(descr); } } diff --git a/java/java-impl/src/com/intellij/refactoring/rename/SubmemberHidesMemberUsageInfo.java b/java/java-impl/src/com/intellij/refactoring/rename/SubmemberHidesMemberUsageInfo.java index a6cbde47f8c1..973eda9e477f 100644 --- a/java/java-impl/src/com/intellij/refactoring/rename/SubmemberHidesMemberUsageInfo.java +++ b/java/java-impl/src/com/intellij/refactoring/rename/SubmemberHidesMemberUsageInfo.java @@ -11,8 +11,8 @@ package com.intellij.refactoring.rename; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; import com.intellij.refactoring.RefactoringBundle; -import com.intellij.refactoring.util.ConflictsUtil; import com.intellij.refactoring.util.RefactoringUIUtil; +import com.intellij.refactoring.util.CommonRefactoringUtil; import com.intellij.usageView.UsageViewUtil; public class SubmemberHidesMemberUsageInfo extends UnresolvableCollisionUsageInfo { @@ -32,6 +32,6 @@ public class SubmemberHidesMemberUsageInfo extends UnresolvableCollisionUsageInf RefactoringUIUtil.getDescription(getElement(), true), UsageViewUtil.getType(getElement())); } - return ConflictsUtil.capitalize(descr); + return CommonRefactoringUtil.capitalize(descr); } } diff --git a/java/java-impl/src/com/intellij/refactoring/util/ConflictsUtil.java b/java/java-impl/src/com/intellij/refactoring/util/ConflictsUtil.java index 3163285f5075..02dd5db77de0 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/ConflictsUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/util/ConflictsUtil.java @@ -28,10 +28,6 @@ public class ConflictsUtil { } } - public static String capitalize(String text) { - return Character.toUpperCase(text.charAt(0)) + text.substring(1); - } - public static void checkMethodConflicts(@Nullable PsiClass aClass, PsiMethod refactoredMethod, PsiMethod prototype, 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 486e0f9c8df8..11ecbb1710e8 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java @@ -1119,12 +1119,12 @@ public class RefactoringUtil { @Override public void visitReferenceElement(PsiJavaCodeReferenceElement reference) { super.visitReferenceElement(reference); final PsiElement resolved = reference.resolve(); - if (resolved != null && !reported.contains(resolved) && !isAncestor(resolved, scopes) && + if (resolved != null && !reported.contains(resolved) && !CommonRefactoringUtil.isAncestor(resolved, scopes) && !PsiSearchScopeUtil.isInScope(resolveScope, resolved)) { final String scopeDescription = CommonRefactoringUtil.htmlEmphasize(RefactoringUIUtil.getDescription(ConflictsUtil.getContainer(reference), true)); final String message = RefactoringBundle.message("0.referenced.in.1.will.not.be.accessible.in.module.2", - ConflictsUtil.capitalize(CommonRefactoringUtil.htmlEmphasize( + CommonRefactoringUtil.capitalize(CommonRefactoringUtil.htmlEmphasize( RefactoringUIUtil.getDescription(resolved, true))), scopeDescription, CommonRefactoringUtil.htmlEmphasize( targetModule.getName())); @@ -1166,14 +1166,14 @@ public class RefactoringUtil { final String message; if (module == targetModule && isInTestSources) { message = RefactoringBundle.message("0.referenced.in.1.will.not.be.accessible.from.production.of.module.2", - ConflictsUtil.capitalize(CommonRefactoringUtil.htmlEmphasize( + CommonRefactoringUtil.capitalize(CommonRefactoringUtil.htmlEmphasize( RefactoringUIUtil.getDescription(moveRenameUsageInfo.getReferencedElement(), true))), scopeDescription, CommonRefactoringUtil.htmlEmphasize(module.getName())); } else { message = RefactoringBundle.message("0.referenced.in.1.will.not.be.accessible.from.module.2", - ConflictsUtil.capitalize(CommonRefactoringUtil.htmlEmphasize( + CommonRefactoringUtil.capitalize(CommonRefactoringUtil.htmlEmphasize( RefactoringUIUtil.getDescription(moveRenameUsageInfo.getReferencedElement(), true))), scopeDescription, CommonRefactoringUtil.htmlEmphasize(module.getName())); @@ -1187,13 +1187,6 @@ public class RefactoringUtil { } } - private static boolean isAncestor(final PsiElement resolved, final Collection scopes) { - for (final PsiElement scope : scopes) { - if (PsiTreeUtil.isAncestor(scope, resolved, false)) return true; - } - return false; - } - @Nullable public static PsiTypeParameterList createTypeParameterListWithUsedTypeParameters(@NotNull final PsiElement... elements) { return createTypeParameterListWithUsedTypeParameters(null, elements); diff --git a/platform/lang-api/src/com/intellij/refactoring/util/CommonRefactoringUtil.java b/platform/lang-api/src/com/intellij/refactoring/util/CommonRefactoringUtil.java index 7e504e2e406b..e70ab57e4fad 100644 --- a/platform/lang-api/src/com/intellij/refactoring/util/CommonRefactoringUtil.java +++ b/platform/lang-api/src/com/intellij/refactoring/util/CommonRefactoringUtil.java @@ -23,6 +23,7 @@ import com.intellij.openapi.vfs.JarFileSystem; import com.intellij.openapi.vfs.ReadonlyStatusHandler; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; +import com.intellij.psi.util.PsiTreeUtil; import com.intellij.refactoring.RefactoringBundle; import com.intellij.codeInsight.hint.HintManager; import gnu.trove.THashSet; @@ -207,4 +208,15 @@ public class CommonRefactoringUtil { } } } + + public static String capitalize(String text) { + return Character.toUpperCase(text.charAt(0)) + text.substring(1); + } + + public static boolean isAncestor(final PsiElement resolved, final Collection scopes) { + for (final PsiElement scope : scopes) { + if (PsiTreeUtil.isAncestor(scope, resolved, false)) return true; + } + return false; + } }