move to subclass to prevent deadlock

This commit is contained in:
Dennis Ushakov
2016-07-19 20:29:15 +03:00
parent de78e4f305
commit 33ebe42ad7
4 changed files with 6 additions and 10 deletions
@@ -48,10 +48,7 @@ import com.intellij.psi.templateLanguages.OuterLanguageElement;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.xml.*;
import com.intellij.xml.XmlAttributeDescriptor;
import com.intellij.xml.XmlElementDescriptor;
import com.intellij.xml.XmlExtension;
import com.intellij.xml.XmlUndefinedElementFixProvider;
import com.intellij.xml.*;
import com.intellij.xml.impl.schema.AnyXmlElementDescriptor;
import com.intellij.xml.util.AnchorReference;
import com.intellij.xml.util.HtmlUtil;
@@ -519,7 +516,7 @@ public class XmlHighlightVisitor extends XmlElementVisitor implements HighlightV
final PsiFile containingFile = tag.getContainingFile();
final XmlExtension extension = containingFile instanceof XmlFile ?
XmlExtension.getExtension(containingFile) :
XmlExtension.DEFAULT_EXTENSION;
DefaultXmlExtension.DEFAULT_EXTENSION;
for (XmlAttribute tagAttribute : attributes) {
ProgressManager.checkCanceled();
if (attribute != tagAttribute && Comparing.strEqual(attribute.getName(), tagAttribute.getName())) {
@@ -33,8 +33,8 @@ import com.intellij.psi.xml.XmlAttributeValue;
import com.intellij.psi.xml.XmlFile;
import com.intellij.psi.xml.XmlTag;
import com.intellij.util.ArrayUtil;
import com.intellij.xml.DefaultXmlExtension;
import com.intellij.xml.XmlBundle;
import com.intellij.xml.XmlExtension;
import com.intellij.xml.util.XmlRefCountHolder;
import com.intellij.xml.util.XmlUtil;
import org.jetbrains.annotations.Nls;
@@ -295,7 +295,7 @@ public class XmlUnusedNamespaceInspection extends XmlSuppressableInspectionTool
protected void doRemove(Project project, XmlAttribute attribute, XmlTag parent) {
if (!attribute.isNamespaceDeclaration()) {
SchemaPrefix schemaPrefix = XmlExtension.DEFAULT_EXTENSION.getPrefixDeclaration(parent, myPrefix);
SchemaPrefix schemaPrefix = DefaultXmlExtension.DEFAULT_EXTENSION.getPrefixDeclaration(parent, myPrefix);
if (schemaPrefix != null) {
attribute = schemaPrefix.getDeclaration();
}
@@ -36,6 +36,7 @@ import java.util.*;
* @author Dmitry Avdeev
*/
public class DefaultXmlExtension extends XmlExtension {
public static final XmlExtension DEFAULT_EXTENSION = new DefaultXmlExtension();
@Override
public boolean isAvailable(final PsiFile file) {
@@ -44,8 +44,6 @@ import java.util.List;
public abstract class XmlExtension {
public static final ExtensionPointName<XmlExtension> EP_NAME = new ExtensionPointName<XmlExtension>("com.intellij.xml.xmlExtension");
public static final XmlExtension DEFAULT_EXTENSION = new DefaultXmlExtension();
public static XmlExtension getExtension(@NotNull final PsiFile file) {
return CachedValuesManager.getCachedValue(file, () -> CachedValueProvider.Result.create(calcExtension(file), PsiModificationTracker.MODIFICATION_COUNT));
}
@@ -56,7 +54,7 @@ public abstract class XmlExtension {
return extension;
}
}
return DEFAULT_EXTENSION;
return DefaultXmlExtension.DEFAULT_EXTENSION;
}
@SuppressWarnings("ConstantConditions")