/* * Copyright 2013 Guidewire Software, Inc. */ package gw.plugin.ij.lang.psi.impl; import com.google.common.collect.ImmutableMap; import com.intellij.psi.PsiElement; import com.intellij.psi.stubs.IStubElementType; import com.intellij.psi.stubs.StubElement; import gw.lang.parser.IParsedElement; import gw.lang.reflect.Modifier; import gw.plugin.ij.lang.parser.GosuCompositeElement; import gw.plugin.ij.lang.psi.api.auxilary.IGosuModifier; import gw.plugin.ij.util.InjectedElementEditor; import org.jetbrains.annotations.NotNull; import java.util.Map; public abstract class GosuDeclaredElementImpl<E extends IParsedElement, T extends StubElement> extends GosuBaseElementImpl<E, T> { public static final Map<String, Integer> NAME_TO_MODIFIER_FLAG_MAP = ImmutableMap.<String, Integer>builder() .put(IGosuModifier.PUBLIC, Modifier.PUBLIC) .put(IGosuModifier.PROTECTED, Modifier.PROTECTED) .put(IGosuModifier.PRIVATE, Modifier.PRIVATE) .put(IGosuModifier.PACKAGE_LOCAL, Modifier.INTERNAL) .put(IGosuModifier.INTERNAL, Modifier.INTERNAL) .put(IGosuModifier.STATIC, Modifier.STATIC) .put(IGosuModifier.ABSTRACT, Modifier.ABSTRACT) .put(IGosuModifier.FINAL, Modifier.FINAL) .put(IGosuModifier.NATIVE, Modifier.NATIVE) .put(IGosuModifier.SYNCHRONIZED, Modifier.SYNCHRONIZED) .put(IGosuModifier.TRANSIENT, Modifier.TRANSIENT) .put(IGosuModifier.VOLATILE, Modifier.VOLATILE) .build(); protected GosuDeclaredElementImpl(@NotNull final T stub, @NotNull IStubElementType nodeType) { super(stub, nodeType); } public GosuDeclaredElementImpl(@NotNull GosuCompositeElement node) { super(node); } @Override public boolean isEquivalentTo(@NotNull final PsiElement that) { if (!(that instanceof GosuBaseElementImpl)) { return false; } if (this.getText().equals(that.getText()) && this.getTextOffset() == that.getTextOffset() && InjectedElementEditor.areInEquivalentFiles(this, that)) { return true; } return super.isEquivalentTo(that); } }