mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
implement ResolvingHint to avoid unnecessary resolve()
(via DeprecatedClassUsageInspection)
This commit is contained in:
@@ -25,6 +25,7 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.ReflectionUtil;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -37,7 +38,8 @@ import java.util.Set;
|
||||
/**
|
||||
* @author yole
|
||||
*/
|
||||
public class ResourceBundleReference extends PsiReferenceBase<PsiElement> implements PsiPolyVariantReference, BundleNameEvaluator {
|
||||
public class ResourceBundleReference extends PsiReferenceBase<PsiElement>
|
||||
implements PsiPolyVariantReference, BundleNameEvaluator, ResolvingHint {
|
||||
private static final Function<PropertiesFile, PsiElement> PROPERTIES_FILE_PSI_ELEMENT_FUNCTION =
|
||||
new Function<PropertiesFile, PsiElement>() {
|
||||
@Override
|
||||
@@ -56,6 +58,11 @@ public class ResourceBundleReference extends PsiReferenceBase<PsiElement> implem
|
||||
myBundleName = StringUtil.replaceChar(getValue(), '/', '.');
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canResolveTo(Class<? extends PsiElement> elementClass) {
|
||||
return ReflectionUtil.isAssignable(PsiFile.class, elementClass);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public PsiElement resolve() {
|
||||
ResolveResult[] resolveResults = multiResolve(false);
|
||||
|
||||
@@ -22,15 +22,14 @@ import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
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.*;
|
||||
import com.intellij.psi.impl.PomTargetPsiElementImpl;
|
||||
import com.intellij.psi.xml.XmlAttributeValue;
|
||||
import com.intellij.psi.xml.XmlElement;
|
||||
import com.intellij.psi.xml.XmlTag;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.ReflectionUtil;
|
||||
import com.intellij.util.xml.*;
|
||||
import com.intellij.xml.util.XmlTagUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -42,7 +41,7 @@ import java.util.List;
|
||||
/**
|
||||
* @author peter
|
||||
*/
|
||||
public class GenericDomValueReference<T> extends PsiReferenceBase<XmlElement> implements EmptyResolveMessageProvider {
|
||||
public class GenericDomValueReference<T> extends PsiReferenceBase<XmlElement> implements EmptyResolveMessageProvider, ResolvingHint {
|
||||
private final GenericDomValue<T> myGenericValue;
|
||||
|
||||
public GenericDomValueReference(GenericDomValue<T> domValue) {
|
||||
@@ -52,6 +51,11 @@ public class GenericDomValueReference<T> extends PsiReferenceBase<XmlElement> im
|
||||
setRangeInElement(createTextRange());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canResolveTo(Class<? extends PsiElement> elementClass) {
|
||||
return ReflectionUtil.isAssignable(XmlElement.class, elementClass);
|
||||
}
|
||||
|
||||
protected final PsiManager getPsiManager() {
|
||||
return PsiManager.getInstance(myGenericValue.getManager().getProject());
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.intellij.psi.impl.source.xml;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiReferenceBase;
|
||||
import com.intellij.psi.ResolvingHint;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.xml.XmlAttribute;
|
||||
import com.intellij.psi.xml.XmlAttributeValue;
|
||||
@@ -25,6 +26,7 @@ import com.intellij.psi.xml.XmlElement;
|
||||
import com.intellij.psi.xml.XmlTag;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.ReflectionUtil;
|
||||
import com.intellij.xml.XmlExtension;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -32,7 +34,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
/**
|
||||
* @author Konstantin Bulenkov
|
||||
*/
|
||||
public class SchemaPrefixReference extends PsiReferenceBase<XmlElement> implements PossiblePrefixReference {
|
||||
public class SchemaPrefixReference extends PsiReferenceBase<XmlElement> implements PossiblePrefixReference, ResolvingHint {
|
||||
|
||||
private final SchemaPrefix myPrefix;
|
||||
|
||||
@@ -67,6 +69,11 @@ public class SchemaPrefixReference extends PsiReferenceBase<XmlElement> implemen
|
||||
return myName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canResolveTo(Class<? extends PsiElement> elementClass) {
|
||||
return ReflectionUtil.isAssignable(XmlElement.class, elementClass);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SchemaPrefix resolve() {
|
||||
return myPrefix == null ? resolvePrefix(myElement, myName) : myPrefix;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2013 JetBrains s.r.o.
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -21,9 +21,11 @@ import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiReferenceBase;
|
||||
import com.intellij.psi.ResolvingHint;
|
||||
import com.intellij.psi.xml.XmlElement;
|
||||
import com.intellij.psi.xml.XmlTag;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.ReflectionUtil;
|
||||
import com.intellij.xml.impl.XmlEnumerationDescriptor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -32,7 +34,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
* @author Dmitry Avdeev
|
||||
* Date: 16.08.13
|
||||
*/
|
||||
public class XmlEnumeratedValueReference extends PsiReferenceBase<XmlElement> implements EmptyResolveMessageProvider {
|
||||
public class XmlEnumeratedValueReference extends PsiReferenceBase<XmlElement> implements EmptyResolveMessageProvider, ResolvingHint {
|
||||
private final XmlEnumerationDescriptor myDescriptor;
|
||||
|
||||
public XmlEnumeratedValueReference(XmlElement value, XmlEnumerationDescriptor descriptor) {
|
||||
@@ -45,6 +47,11 @@ public class XmlEnumeratedValueReference extends PsiReferenceBase<XmlElement> im
|
||||
myDescriptor = descriptor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canResolveTo(Class<? extends PsiElement> elementClass) {
|
||||
return ReflectionUtil.isAssignable(XmlElement.class, elementClass);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public PsiElement resolve() {
|
||||
|
||||
Reference in New Issue
Block a user