import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupValueFactory;
import com.intellij.openapi.util.TextRange;
+import com.intellij.pom.PomTarget;
import com.intellij.pom.references.PomService;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiManager;
import com.intellij.psi.PsiReferenceBase;
+import com.intellij.psi.impl.PomTargetPsiElementImpl;
import com.intellij.psi.xml.XmlAttributeValue;
import com.intellij.psi.xml.XmlElement;
import com.intellij.psi.xml.XmlTag;
public boolean isReferenceTo(final PsiElement element) {
final Converter<T> converter = getConverter();
if (converter instanceof ResolvingConverter) {
- return ((ResolvingConverter<T>)converter).isReferenceTo(element, getStringValue(), myGenericValue.getValue(), getConvertContext());
+ T value = myGenericValue.getValue();
+ if (value instanceof DomElement && element instanceof PomTargetPsiElementImpl) {
+ PomTarget target = ((PomTargetPsiElementImpl)element).getTarget();
+ if (target instanceof DomTarget) {
+ if (value.equals(((DomTarget)target).getDomElement())) {
+ return true;
+ }
+ }
+ }
+ return ((ResolvingConverter<T>)converter).isReferenceTo(element, getStringValue(), value, getConvertContext());
}
return super.isReferenceTo(element);
}
return target == null ? super.getPsiElement(resolvedValue) : PomService.convertToPsi(target);
}
+ @Override
+ public boolean isReferenceTo(@NotNull PsiElement element, String stringValue, @Nullable T resolveResult, ConvertContext context) {
+ return resolveResult != null && element.getManager().areElementsEquivalent(element, resolveResult.getXmlElement());
+ }
+
private static DomElement getResolvingScope(final ConvertContext context) {
final DomElement invocationElement = context.getInvocationElement();
return invocationElement.getManager().getResolvingScope((GenericDomValue)invocationElement);
*/
public boolean isReferenceTo(@NotNull PsiElement element, final String stringValue, @Nullable T resolveResult,
final ConvertContext context) {
- return element.getManager().areElementsEquivalent(element, resolveResult == null ? null : getPsiElement(resolveResult));
+ return resolveResult != null && element.getManager().areElementsEquivalent(element, getPsiElement(resolveResult));
}
/**