From cc1ff824369b216dd579b876ebb70927487d1351 Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Mon, 31 Oct 2016 17:58:59 +0300 Subject: [PATCH] [groovy] tweak isEquivalentTo() in accessors and light variables --- .../psi/impl/synthetic/GrAccessorMethodImpl.java | 12 ++++++++++-- .../lang/psi/impl/synthetic/GrLightVariable.java | 3 +++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrAccessorMethodImpl.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrAccessorMethodImpl.java index 8f479706c7a8..f7ca8067b650 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrAccessorMethodImpl.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrAccessorMethodImpl.java @@ -33,6 +33,8 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrAc import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUtil; import org.jetbrains.plugins.groovy.lang.psi.util.GrTraitUtil; +import static org.jetbrains.plugins.groovy.lang.psi.util.GroovyPropertyUtils.GET_PREFIX; + /** * @author ven */ @@ -127,8 +129,14 @@ public class GrAccessorMethodImpl extends LightMethodBuilder implements GrAccess if (another == this) return true; if (!(another instanceof GrAccessorMethod)) return false; - if (!((GrAccessorMethod)another).getName().equals(getName())) return false; - return getManager().areElementsEquivalent(myProperty, ((GrAccessorMethod)another).getProperty()); + GrAccessorMethod anotherAccessor = (GrAccessorMethod)another; + if (isSetter()) { + if (!anotherAccessor.isSetter()) return false; + } + else { + if (!getName().startsWith(GET_PREFIX) == anotherAccessor.getName().startsWith(GET_PREFIX)) return false; + } + return getManager().areElementsEquivalent(myProperty, anotherAccessor.getProperty()); } @NotNull diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrLightVariable.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrLightVariable.java index cf871ff52e02..e2c86883130f 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrLightVariable.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrLightVariable.java @@ -111,6 +111,9 @@ public class GrLightVariable extends GrImplicitVariableImpl implements Navigatab @Override public boolean isEquivalentTo(PsiElement another) { + if (another instanceof GrLightVariable) { + return myDeclarations.equals(((GrLightVariable)another).getDeclarations()); + } return myDeclarations.contains(another) || super.isEquivalentTo(another); }