mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[groovy] hand qualification check logic over to extensions
This commit is contained in:
+14
-1
@@ -16,6 +16,8 @@
|
||||
package org.jetbrains.plugins.groovy.refactoring.rename;
|
||||
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.psi.PsiMember;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -47,5 +49,16 @@ public interface GrRenameHelper {
|
||||
* @see DefaultRenameHelper
|
||||
*/
|
||||
@Nullable
|
||||
String getNewMemberName(@NotNull PsiMember member, @NotNull String newOriginalName);
|
||||
default String getNewMemberName(@NotNull PsiMember member, @NotNull String newOriginalName) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param manager
|
||||
* @param before element to which the reference resolved before rename
|
||||
* @param after element to which the reference resolves after rename
|
||||
*/
|
||||
default boolean isQualificationNeeded(@NotNull PsiManager manager, @NotNull PsiElement before, @NotNull PsiElement after) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
+6
-2
@@ -51,6 +51,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.jetbrains.plugins.groovy.refactoring.rename.RenameHelperKt.getNewNameFromTransformations;
|
||||
import static org.jetbrains.plugins.groovy.refactoring.rename.RenameHelperKt.isQualificationNeeded;
|
||||
|
||||
/**
|
||||
* @author ilyas
|
||||
@@ -100,13 +101,16 @@ public class RenameGrFieldProcessor extends RenameJavaVariableProcessor {
|
||||
|
||||
field.setName(newName);
|
||||
|
||||
PsiManager manager = psiElement.getManager();
|
||||
for (GrReferenceExpression expression : handled.keySet()) {
|
||||
PsiElement oldResolved = handled.get(expression);
|
||||
if (oldResolved == null) continue;
|
||||
PsiElement resolved = expression.resolve();
|
||||
if (resolved == null) continue;
|
||||
if (expression.getManager().areElementsEquivalent(oldResolved, resolved)) continue;
|
||||
qualify(field, expression);
|
||||
if (manager.areElementsEquivalent(oldResolved, resolved)) continue;
|
||||
if (oldResolved.equals(field) || isQualificationNeeded(manager, oldResolved, resolved)) {
|
||||
qualify(field, expression);
|
||||
}
|
||||
}
|
||||
|
||||
if (listener != null) {
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package org.jetbrains.plugins.groovy.refactoring.rename
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiManager
|
||||
import com.intellij.psi.PsiMember
|
||||
|
||||
fun PsiElement?.getNewNameFromTransformations(newName: String) = (this as? PsiMember)?.let {
|
||||
@@ -29,4 +30,8 @@ private fun doGetNewNameFromTransformations(member: PsiMember, newName: String):
|
||||
if (newMemberName != null) return newMemberName
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
fun isQualificationNeeded(manager: PsiManager, before: PsiElement, after: PsiElement) = GrRenameHelper.EP_NAME.extensions.any {
|
||||
it.isQualificationNeeded(manager, before, after)
|
||||
}
|
||||
+8
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
package org.jetbrains.plugins.groovy.transformations.impl
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiManager
|
||||
import com.intellij.psi.PsiMember
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrAccessorMethod
|
||||
import org.jetbrains.plugins.groovy.lang.psi.util.GroovyPropertyUtils.getAccessorName
|
||||
@@ -32,4 +34,10 @@ class DefaultRenameHelper : GrRenameHelper {
|
||||
getAccessorName(if (member.name.startsWith("is")) "is" else "get", newOriginalName)
|
||||
}
|
||||
}
|
||||
|
||||
override fun isQualificationNeeded(manager: PsiManager,
|
||||
before: PsiElement,
|
||||
after: PsiElement): Boolean {
|
||||
return before is GrAccessorMethod && (after !is GrAccessorMethod || !manager.areElementsEquivalent(before.property, after.property))
|
||||
}
|
||||
}
|
||||
+8
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
package org.jetbrains.plugins.groovy.transformations.impl
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiManager
|
||||
import com.intellij.psi.PsiMember
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrTraitField
|
||||
import org.jetbrains.plugins.groovy.lang.psi.util.GrTraitUtil
|
||||
@@ -28,4 +30,10 @@ class TraitRenameHelper : GrRenameHelper {
|
||||
val containingClass = prototype.containingClass ?: return null
|
||||
return GrTraitUtil.getTraitFieldPrefix(containingClass) + newOriginalName
|
||||
}
|
||||
|
||||
override fun isQualificationNeeded(manager: PsiManager,
|
||||
before: PsiElement,
|
||||
after: PsiElement): Boolean {
|
||||
return before is GrTraitField && (after !is GrTraitField || !manager.areElementsEquivalent(after.prototype, before.prototype))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user