IDEA-69452: "functions" namespace considered to be unsed even if it used in EL

This commit is contained in:
Dmitry Avdeev
2011-05-19 16:04:23 +04:00
parent 3bb60196ef
commit 63c31246c6
2 changed files with 10 additions and 12 deletions
@@ -202,9 +202,4 @@ public abstract class XmlExtension {
public boolean isCustomTagAllowed(final XmlTag tag) {
return false;
}
@Nullable
public String[] getUsedPrefixes(XmlAttributeValue value) {
return null;
}
}
@@ -22,6 +22,7 @@ import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.UserDataCache;
import com.intellij.psi.*;
import com.intellij.psi.impl.source.resolve.reference.impl.providers.IdReferenceProvider;
import com.intellij.psi.impl.source.xml.PossiblePrefixReference;
import com.intellij.psi.impl.source.xml.SchemaPrefix;
import com.intellij.psi.impl.source.xml.SchemaPrefixReference;
import com.intellij.psi.templateLanguages.OuterLanguageElement;
@@ -34,7 +35,6 @@ import com.intellij.util.NullableFunction;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.xml.XmlAttributeDescriptor;
import com.intellij.xml.XmlElementDescriptor;
import com.intellij.xml.XmlExtension;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -159,6 +159,15 @@ public class XmlRefCountHolder {
private void visitOuterLanguageElement(@NotNull final PsiElement element) {
myHolder.registerOuterLanguageElement(element);
PsiReference[] references = element.getReferences();
for (PsiReference reference : references) {
if (reference instanceof PossiblePrefixReference && ((PossiblePrefixReference)reference).isPrefixReference()) {
PsiElement resolve = reference.resolve();
if (resolve instanceof SchemaPrefix) {
myHolder.addUsedPrefix(((SchemaPrefix)resolve).getName());
}
}
}
}
@Override
@@ -226,12 +235,6 @@ public class XmlRefCountHolder {
}
}
}
String[] prefixes = XmlExtension.getExtension(tag.getContainingFile()).getUsedPrefixes(value);
if (prefixes != null) {
for (String prefix : prefixes) {
myHolder.addUsedPrefix(prefix);
}
}
}
if (attributeDescriptor.hasIdRefType() && PsiTreeUtil.getChildOfType(value, OuterLanguageElement.class) == null) {