From 63c31246c69b0a1ab62701dace8e41e33be9fa9f Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 19 May 2011 16:02:08 +0400 Subject: [PATCH] IDEA-69452: "functions" namespace considered to be unsed even if it used in EL --- xml/impl/src/com/intellij/xml/XmlExtension.java | 5 ----- .../intellij/xml/util/XmlRefCountHolder.java | 17 ++++++++++------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/xml/impl/src/com/intellij/xml/XmlExtension.java b/xml/impl/src/com/intellij/xml/XmlExtension.java index dde9da6c8a71..93b3f22720c8 100644 --- a/xml/impl/src/com/intellij/xml/XmlExtension.java +++ b/xml/impl/src/com/intellij/xml/XmlExtension.java @@ -202,9 +202,4 @@ public abstract class XmlExtension { public boolean isCustomTagAllowed(final XmlTag tag) { return false; } - - @Nullable - public String[] getUsedPrefixes(XmlAttributeValue value) { - return null; - } } diff --git a/xml/impl/src/com/intellij/xml/util/XmlRefCountHolder.java b/xml/impl/src/com/intellij/xml/util/XmlRefCountHolder.java index cc02d101fa3e..74d1b7063d8f 100644 --- a/xml/impl/src/com/intellij/xml/util/XmlRefCountHolder.java +++ b/xml/impl/src/com/intellij/xml/util/XmlRefCountHolder.java @@ -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) {