From 5e78c39b25e4b0ebacdaae10ec0213f5d5d7c5c2 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Wed, 29 Apr 2015 17:42:38 +0300 Subject: [PATCH] html5 assumes empty string as value of attribute without explicit one validate that value as usual #WEB-16321 fixed --- ...UnknownBooleanAttributeInspectionBase.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/xml/xml-analysis-impl/src/com/intellij/codeInspection/htmlInspections/HtmlUnknownBooleanAttributeInspectionBase.java b/xml/xml-analysis-impl/src/com/intellij/codeInspection/htmlInspections/HtmlUnknownBooleanAttributeInspectionBase.java index 448a76d35835..abb0fe0cbb51 100644 --- a/xml/xml-analysis-impl/src/com/intellij/codeInspection/htmlInspections/HtmlUnknownBooleanAttributeInspectionBase.java +++ b/xml/xml-analysis-impl/src/com/intellij/codeInspection/htmlInspections/HtmlUnknownBooleanAttributeInspectionBase.java @@ -27,6 +27,7 @@ import com.intellij.psi.xml.XmlTag; import com.intellij.xml.XmlAttributeDescriptor; import com.intellij.xml.XmlBundle; import com.intellij.xml.XmlElementDescriptor; +import com.intellij.xml.impl.XmlEnumerationDescriptor; import com.intellij.xml.impl.schema.AnyXmlAttributeDescriptor; import com.intellij.xml.impl.schema.AnyXmlElementDescriptor; import com.intellij.xml.util.HtmlUtil; @@ -92,14 +93,28 @@ public class HtmlUnknownBooleanAttributeInspectionBase extends HtmlUnknownElemen if (attributeDescriptor != null && !(attributeDescriptor instanceof AnyXmlAttributeDescriptor)) { String name = attribute.getName(); if (!HtmlUtil.isBooleanAttribute(attributeDescriptor, null) && (!isCustomValuesEnabled() || !isCustomValue(name))) { - LocalQuickFix[] quickFixes = new LocalQuickFix[]{ + final boolean html5 = HtmlUtil.isHtml5Context(tag); + LocalQuickFix[] quickFixes = !html5 ? new LocalQuickFix[]{ new AddCustomHtmlElementIntentionAction(BOOLEAN_ATTRIBUTE_KEY, name, XmlBundle.message("add.custom.html.boolean.attribute", name)), XmlQuickFixFactory.getInstance().addAttributeValueFix(attribute), new RemoveAttributeIntentionAction(name), + } : new LocalQuickFix[] { + XmlQuickFixFactory.getInstance().addAttributeValueFix(attribute) }; - registerProblemOnAttributeName(attribute, XmlErrorMessages.message("attribute.is.not.boolean", attribute.getName()), holder, - quickFixes); + + String error = null; + if (html5) { + if (attributeDescriptor instanceof XmlEnumerationDescriptor && + ((XmlEnumerationDescriptor)attributeDescriptor).getValueDeclaration(attribute, "") == null) { + error = XmlErrorMessages.message("wrong.value", "attribute"); + } + } else { + error = XmlErrorMessages.message("attribute.is.not.boolean", attribute.getName()); + } + if (error != null) { + registerProblemOnAttributeName(attribute, error, holder, quickFixes); + } } } }