haikuwebkit/LayoutTests/fast/css/parsing-css-is-8-expected.txt

1025 lines
68 KiB
Plaintext
Raw Permalink Normal View History

[CSS Selectors 4] Add support for `:is()` with the same logic for the existing `:matches()` https://bugs.webkit.org/show_bug.cgi?id=209707 Reviewed by Antti Koivisto. LayoutTests/imported/w3c: * web-platform-tests/css/selectors/invalidation/is-expected.txt: Source/WebCore: Add `PseudoClassType::PseudoClassIs` and use it where `PseudoClassTyle::PseudoClassMatches` is already used now. Tests: fast/css/is-specificity-1.html fast/css/is-specificity-2.html fast/css/is-specificity-3.html fast/css/is-specificity-4.html fast/css/is-specificity-5.html fast/css/is-specificity-6.html fast/css/is-specificity-7.html fast/css/is-specificity-8.html fast/css/is-specificity-9.html fast/css/is-specificity-10.html fast/css/parsing-css-is-1.html fast/css/parsing-css-is-2.html fast/css/parsing-css-is-3.html fast/css/parsing-css-is-4.html fast/css/parsing-css-is-5.html fast/css/parsing-css-is-6.html fast/css/parsing-css-is-7.html fast/css/parsing-css-is-8.html fast/selectors/is-backtracking.html fast/selectors/is-complex.html fast/selectors/is-selector-list.html fast/selectors/is-selector-list-ending-with-never-matching-selectors.html fast/selectors/is-with-pseudo-element.html fast/selectors/pseudo-element-inside-is.html fast/selectors/querySelector-is.html imported/w3c/web-platform-tests/css/selectors/invalidation/is.html imported/w3c/web-platform-tests/css/selectors/is-nested.html imported/w3c/web-platform-tests/css/selectors/is-specificity.html * css/CSSSelector.h: * css/CSSSelector.cpp: (WebCore::simpleSelectorSpecificityInternal): (WebCore::simpleSelectorFunctionalPseudoClassStaticSpecificity): (WebCore::CSSSelector::selectorText const): * css/SelectorChecker.cpp: (WebCore::SelectorChecker::matchRecursively const): * css/SelectorPseudoClassAndCompatibilityElementMap.in: * css/parser/CSSSelectorParser.cpp: (WebCore::isOnlyPseudoClassFunction): (WebCore::CSSSelectorParser::consumePseudo): * cssjit/SelectorCompiler.cpp: (WebCore::SelectorCompiler::addPseudoClassType): (WebCore::SelectorChecker::checkOne const): * inspector/InspectorStyleSheet.cpp: (WebCore::hasDynamicSpecificity): * features.json: LayoutTests: * fast/css/css-selector-text.html: * fast/css/css-selector-text-expected.txt: * fast/css/css-set-selector-text.html: * fast/css/css-set-selector-text-expected.txt: * fast/css/is-specificity-1.html: Copied from fast/css/matches-specificity-1.html. * fast/css/is-specificity-1-expected.html: Copied from fast/css/matches-specificity-1-expected.html. * fast/css/is-specificity-2.html: Copied from fast/css/matches-specificity-2.html. * fast/css/is-specificity-2-expected.html: Copied from fast/css/matches-specificity-2-expected.html. * fast/css/is-specificity-3.html: Copied from fast/css/matches-specificity-3.html. * fast/css/is-specificity-3-expected.html: Copied from fast/css/matches-specificity-3-expected.html. * fast/css/is-specificity-4.html: Copied from fast/css/matches-specificity-4.html. * fast/css/is-specificity-4-expected.html: Copied from fast/css/matches-specificity-4-expected.html. * fast/css/is-specificity-5.html: Copied from fast/css/matches-specificity-5.html. * fast/css/is-specificity-5-expected.html: Copied from fast/css/matches-specificity-5-expected.html. * fast/css/is-specificity-6.html: Copied from fast/css/matches-specificity-6.html. * fast/css/is-specificity-6-expected.html: Copied from fast/css/matches-specificity-6-expected.html. * fast/css/is-specificity-7.html: Copied from fast/css/matches-specificity-7.html. * fast/css/is-specificity-7-expected.html: Copied from fast/css/matches-specificity-7-expected.html. * fast/css/is-specificity-8.html: Copied from fast/css/matches-specificity-8.html. * fast/css/is-specificity-8-expected.html: Copied from fast/css/matches-specificity-8-expected.html. * fast/css/is-specificity-9.html: Copied from fast/css/matches-specificity-9.html. * fast/css/is-specificity-9-expected.html: Copied from fast/css/matches-specificity-9-expected.html. * fast/css/is-specificity-10.html: Copied from fast/css/matches-specificity-10.html. * fast/css/is-specificity-10-expected.html: Copied from fast/css/matches-specificity-10-expected.html. * fast/css/parsing-css-attribute-case-insensitive-value-1.html: * fast/css/parsing-css-attribute-case-insensitive-value-1-expected.txt: * fast/css/parsing-css-attribute-case-insensitive-value-4.html: * fast/css/parsing-css-attribute-case-insensitive-value-4-expected.txt: * fast/css/parsing-css-is-1.html: Coped from fast/css/parsing-css-matches-1.html. * fast/css/parsing-css-is-1-expected.txt: Coped from fast/css/parsing-css-matches-1-expected.txt. * fast/css/parsing-css-is-2.html: Coped from fast/css/parsing-css-matches-2.html. * fast/css/parsing-css-is-2-expected.txt: Coped from fast/css/parsing-css-matches-2-expected.txt. * fast/css/parsing-css-is-3.html: Coped from fast/css/parsing-css-matches-3.html. * fast/css/parsing-css-is-3-expected.txt: Coped from fast/css/parsing-css-matches-3-expected.txt. * fast/css/parsing-css-is-4.html: Coped from fast/css/parsing-css-matches-4.html. * fast/css/parsing-css-is-4-expected.txt: Coped from fast/css/parsing-css-matches-4-expected.txt. * fast/css/parsing-css-is-5.html: Coped from fast/css/parsing-css-matches-5.html. * fast/css/parsing-css-is-5-expected.txt: Coped from fast/css/parsing-css-matches-5-expected.txt. * fast/css/parsing-css-is-6.html: Coped from fast/css/parsing-css-matches-6.html. * fast/css/parsing-css-is-6-expected.txt: Coped from fast/css/parsing-css-matches-6-expected.txt. * fast/css/parsing-css-is-7.html: Coped from fast/css/parsing-css-matches-7.html. * fast/css/parsing-css-is-7-expected.txt: Coped from fast/css/parsing-css-matches-7-expected.txt. * fast/css/parsing-css-is-8.html: Coped from fast/css/parsing-css-matches-8.html. * fast/css/parsing-css-is-8-expected.txt: Coped from fast/css/parsing-css-matches-8-expected.txt. * fast/css/parsing-css-not-1.html: * fast/css/parsing-css-not-1-expected.txt: * fast/css/parsing-css-not-2.html: * fast/css/parsing-css-not-2-expected.txt: * fast/css/parsing-css-not-5.html: * fast/css/parsing-css-not-5-expected.txt: * fast/css/parsing-css-not-6.html: * fast/css/parsing-css-not-6-expected.txt: * fast/css/parsing-css-not-7.html: * fast/css/parsing-css-not-7-expected.txt: * fast/css/parsing-css-not-8.html: * fast/css/parsing-css-not-8-expected.txt: * fast/css/parsing-css-not-9.html: * fast/css/parsing-css-not-9-expected.txt: * fast/css/parsing-css-nth-child-of-4.html: * fast/css/parsing-css-nth-child-of-4-expected.txt: * fast/css/parsing-css-nth-last-child-of-4.html: * fast/css/parsing-css-nth-last-child-of-4-expected.txt: * fast/selectors/case-insensitive-attribute-register-requirement-1.html: * fast/selectors/case-insensitive-attribute-register-requirement-1-expected.txt: * fast/selectors/element-matches-attribute-ascii-case-insensitive-html-expected.txt: * fast/selectors/element-matches-attribute-ascii-case-insensitive-html.html: * fast/selectors/is-backtracking.html: Copied from fast/selectors/matches-backtracking.html. * fast/selectors/is-backtracking-expected.txt: Copied from fast/selectors/matches-backtracking-expected.txt. * fast/selectors/is-complex.html: Copied from fast/selectors/matches-complex.html. * fast/selectors/is-complex-expected.txt: Copied from fast/selectors/matches-complex-expected.txt. * fast/selectors/is-selector-list.html: Copied from fast/selectors/matches-selector-list.html. * fast/selectors/is-selector-list-expected.txt: Copied from fast/selectors/matches-selector-list-expected.txt. * fast/selectors/is-selector-list-ending-with-never-matching-selectors.html: Copied from fast/selectors/matches-selector-list-ending-with-never-matching-selectors.html. * fast/selectors/is-selector-list-ending-with-never-matching-selectors-expected.txt: Copied from fast/selectors/matches-selector-list-ending-with-never-matching-selectors-expected.txt. * fast/selectors/is-with-pseudo-element.html: Copied from fast/selectors/matches-with-pseudo-element.html. * fast/selectors/is-with-pseudo-element-expected.html: Copied from fast/selectors/matches-with-pseudo-element-expected.html. * fast/selectors/pseudo-element-inside-is.html: Copied from fast/selectors/pseudo-element-inside-matches.html. * fast/selectors/pseudo-element-inside-is-expected.html: Copied from fast/selectors/pseudo-element-inside-matches-expected.html. * fast/selectors/querySelector-attribute-ascii-case-insensitive-html.html: * fast/selectors/querySelector-attribute-ascii-case-insensitive-html-expected.txt: * fast/selectors/querySelector-is.html: Copied from fast/selectors/querySelector-matches.html. * fast/selectors/querySelector-is-expected.txt: Copied from fast/selectors/querySelector-matches-expected.txt. * fast/selectors/querySelector-tagname-case-sensitivity-svg-in-html.html: * fast/selectors/querySelector-tagname-case-sensitivity-svg-in-html-expected.txt: * fast/selectors/querySelector-tagname-case-sensitivity-svg-in-xhtml.xhtml: * fast/selectors/querySelector-tagname-case-sensitivity-svg-in-xhtml-expected.txt: * fast/selectors/querySelector-tagname-case-sensitivity-xml-in-html.html: * fast/selectors/querySelector-tagname-case-sensitivity-xml-in-html-expected.txt: * fast/selectors/querySelector-tagname-case-sensitivity-xml-in-xhtml.xhtml: * fast/selectors/querySelector-tagname-case-sensitivity-xml-in-xhtml-expected.txt: * inspector/css/selector-dynamic-specificity.html: * inspector/css/selector-dynamic-specificity-expected.txt: * TestExpectations: * platform/wincairo/TestExpectations: * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/222706@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259261 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-03-31 00:52:56 +00:00
Test the parsing of :is(selectorList) for querySelector and style.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
3 :is(valid, valid, invalid) selectors
Implement <forgiving-selector-list> for :is/:where https://bugs.webkit.org/show_bug.cgi?id=217814 <rdar://problem/70384483> Reviewed by Sam Weinig. LayoutTests/imported/w3c: * web-platform-tests/css/selectors/is-where-error-recovery-expected.txt: * web-platform-tests/css/selectors/is-where-not-expected.txt: Source/WebCore: The spec now says :is/:where should parse as a forgiving selector list: https://drafts.csswg.org/selectors/#matches * contentextensions/ContentExtensionParser.cpp: (WebCore::ContentExtensions::isValidCSSSelector): * css/CSSPageRule.cpp: (WebCore::CSSPageRule::setSelectorText): * css/CSSSelectorList.h: (WebCore::CSSSelectorList::isEmpty const): (WebCore::CSSSelectorList::isValid const): Deleted. An empty CSSSelectorList is now valid. Represent invalid CSSSelectorList with Optional where needed. * css/CSSStyleRule.cpp: (WebCore::CSSStyleRule::setSelectorText): * css/parser/CSSParser.cpp: (WebCore::CSSParser::parseSelector): * css/parser/CSSParser.h: * css/parser/CSSParserImpl.cpp: (WebCore::CSSParserImpl::consumePageRule): (WebCore::CSSParserImpl::consumeStyleRule): * css/parser/CSSSelectorParser.cpp: (WebCore::parseCSSSelector): (WebCore::CSSSelectorParser::consumeComplexSelectorList): (WebCore::CSSSelectorParser::consumeComplexForgivingSelectorList): Add function for consuming <forgiving-selector-list>. (WebCore::CSSSelectorParser::consumePseudo): Use it for :is/:where. * css/parser/CSSSelectorParser.h: * dom/SelectorQuery.cpp: * inspector/InspectorStyleSheet.cpp: (WebCore::isValidSelectorListString): * inspector/agents/InspectorDOMAgent.cpp: (WebCore::InspectorDOMAgent::highlightSelector): * style/RuleSet.cpp: (WebCore::Style::RuleSet::addStyleRule): LayoutTests: Update some selector parsing tests to log the results instead of PASS/FAIL as forgiving parsing allows many combinations involving :is/:where. Remove a few repetetive tests that don't add anything. * fast/css/parsing-css-attribute-case-insensitive-value-4-expected.txt: Removed. * fast/css/parsing-css-attribute-case-insensitive-value-4.html: Removed. * fast/css/parsing-css-is-5-expected.txt: * fast/css/parsing-css-is-5.html: * fast/css/parsing-css-is-6-expected.txt: * fast/css/parsing-css-is-6.html: * fast/css/parsing-css-is-7-expected.txt: * fast/css/parsing-css-is-7.html: * fast/css/parsing-css-is-8-expected.txt: * fast/css/parsing-css-is-8.html: * fast/css/parsing-css-matches-5-expected.txt: Removed. * fast/css/parsing-css-matches-5.html: Removed. * fast/css/parsing-css-matches-6-expected.txt: Removed. * fast/css/parsing-css-matches-6.html: Removed. * fast/css/parsing-css-matches-7-expected.txt: Removed. * fast/css/parsing-css-matches-7.html: Removed. * fast/css/parsing-css-matches-8-expected.txt: Removed. * fast/css/parsing-css-matches-8.html: Removed. * fast/css/parsing-css-not-5-expected.txt: * fast/css/parsing-css-not-5.html: * fast/css/parsing-css-not-6-expected.txt: * fast/css/parsing-css-not-6.html: * fast/css/parsing-css-not-7-expected.txt: * fast/css/parsing-css-not-7.html: * fast/css/parsing-css-not-8-expected.txt: * fast/css/parsing-css-not-8.html: * fast/css/parsing-css-not-9-expected.txt: * fast/css/parsing-css-not-9.html: * fast/css/parsing-css-nth-child-of-4-expected.txt: * fast/css/parsing-css-nth-child-of-4.html: * fast/css/parsing-css-nth-last-child-of-4-expected.txt: * fast/css/parsing-css-nth-last-child-of-4.html: * fast/selectors/invalid-functional-pseudo-class-expected.txt: * fast/selectors/invalid-functional-pseudo-class.html: * fast/selectors/pseudo-element-in-is-where-expected.html: * fast/selectors/pseudo-element-in-is-where.html: Canonical link: https://commits.webkit.org/230692@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@268741 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-10-20 17:07:25 +00:00
selector ':is(foobar,foobar,) { }' parsed: YES
selector ':is(foobar,foobar, ) { }' parsed: YES
selector ':is(foobar,foobar,,) { }' parsed: YES
selector ':is(foobar,foobar,.123class) { }' parsed: YES
selector ':is(foobar,foobar,#123id) { }' parsed: YES
selector ':is(foobar,foobar,[]) { }' parsed: YES
selector ':is(foobar,foobar,()) { }' parsed: YES
selector ':is(foobar,foobar,)) { }' parsed: NO
selector ':is(foobar,foobar,{}) { }' parsed: YES
selector ':is(foobar,foobar,}) { }' parsed: YES
selector ':is(foobar,foobar,:not() { }' parsed: NO
selector ':is(foobar,foobar,:is() { }' parsed: NO
selector ':is(foobar,foobar,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar,.class,) { }' parsed: YES
selector ':is(foobar,.class, ) { }' parsed: YES
selector ':is(foobar,.class,,) { }' parsed: YES
selector ':is(foobar,.class,.123class) { }' parsed: YES
selector ':is(foobar,.class,#123id) { }' parsed: YES
selector ':is(foobar,.class,[]) { }' parsed: YES
selector ':is(foobar,.class,()) { }' parsed: YES
selector ':is(foobar,.class,)) { }' parsed: NO
selector ':is(foobar,.class,{}) { }' parsed: YES
selector ':is(foobar,.class,}) { }' parsed: YES
selector ':is(foobar,.class,:not() { }' parsed: NO
selector ':is(foobar,.class,:is() { }' parsed: NO
selector ':is(foobar,.class,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar,:last-child,) { }' parsed: YES
selector ':is(foobar,:last-child, ) { }' parsed: YES
selector ':is(foobar,:last-child,,) { }' parsed: YES
selector ':is(foobar,:last-child,.123class) { }' parsed: YES
selector ':is(foobar,:last-child,#123id) { }' parsed: YES
selector ':is(foobar,:last-child,[]) { }' parsed: YES
selector ':is(foobar,:last-child,()) { }' parsed: YES
selector ':is(foobar,:last-child,)) { }' parsed: NO
selector ':is(foobar,:last-child,{}) { }' parsed: YES
selector ':is(foobar,:last-child,}) { }' parsed: YES
selector ':is(foobar,:last-child,:not() { }' parsed: NO
selector ':is(foobar,:last-child,:is() { }' parsed: NO
selector ':is(foobar,:last-child,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar,::first-letter,) { }' parsed: YES
selector ':is(foobar,::first-letter, ) { }' parsed: YES
selector ':is(foobar,::first-letter,,) { }' parsed: YES
selector ':is(foobar,::first-letter,.123class) { }' parsed: YES
selector ':is(foobar,::first-letter,#123id) { }' parsed: YES
selector ':is(foobar,::first-letter,[]) { }' parsed: YES
selector ':is(foobar,::first-letter,()) { }' parsed: YES
selector ':is(foobar,::first-letter,)) { }' parsed: NO
selector ':is(foobar,::first-letter,{}) { }' parsed: YES
selector ':is(foobar,::first-letter,}) { }' parsed: YES
selector ':is(foobar,::first-letter,:not() { }' parsed: NO
selector ':is(foobar,::first-letter,:is() { }' parsed: NO
selector ':is(foobar,::first-letter,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar,::before,) { }' parsed: YES
selector ':is(foobar,::before, ) { }' parsed: YES
selector ':is(foobar,::before,,) { }' parsed: YES
selector ':is(foobar,::before,.123class) { }' parsed: YES
selector ':is(foobar,::before,#123id) { }' parsed: YES
selector ':is(foobar,::before,[]) { }' parsed: YES
selector ':is(foobar,::before,()) { }' parsed: YES
selector ':is(foobar,::before,)) { }' parsed: NO
selector ':is(foobar,::before,{}) { }' parsed: YES
selector ':is(foobar,::before,}) { }' parsed: YES
selector ':is(foobar,::before,:not() { }' parsed: NO
selector ':is(foobar,::before,:is() { }' parsed: NO
selector ':is(foobar,::before,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar,foobar#id.class,) { }' parsed: YES
selector ':is(foobar,foobar#id.class, ) { }' parsed: YES
selector ':is(foobar,foobar#id.class,,) { }' parsed: YES
selector ':is(foobar,foobar#id.class,.123class) { }' parsed: YES
selector ':is(foobar,foobar#id.class,#123id) { }' parsed: YES
selector ':is(foobar,foobar#id.class,[]) { }' parsed: YES
selector ':is(foobar,foobar#id.class,()) { }' parsed: YES
selector ':is(foobar,foobar#id.class,)) { }' parsed: NO
selector ':is(foobar,foobar#id.class,{}) { }' parsed: YES
selector ':is(foobar,foobar#id.class,}) { }' parsed: YES
selector ':is(foobar,foobar#id.class,:not() { }' parsed: NO
selector ':is(foobar,foobar#id.class,:is() { }' parsed: NO
selector ':is(foobar,foobar#id.class,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar,#id:empty,) { }' parsed: YES
selector ':is(foobar,#id:empty, ) { }' parsed: YES
selector ':is(foobar,#id:empty,,) { }' parsed: YES
selector ':is(foobar,#id:empty,.123class) { }' parsed: YES
selector ':is(foobar,#id:empty,#123id) { }' parsed: YES
selector ':is(foobar,#id:empty,[]) { }' parsed: YES
selector ':is(foobar,#id:empty,()) { }' parsed: YES
selector ':is(foobar,#id:empty,)) { }' parsed: NO
selector ':is(foobar,#id:empty,{}) { }' parsed: YES
selector ':is(foobar,#id:empty,}) { }' parsed: YES
selector ':is(foobar,#id:empty,:not() { }' parsed: NO
selector ':is(foobar,#id:empty,:is() { }' parsed: NO
selector ':is(foobar,#id:empty,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar,a b,) { }' parsed: YES
selector ':is(foobar,a b, ) { }' parsed: YES
selector ':is(foobar,a b,,) { }' parsed: YES
selector ':is(foobar,a b,.123class) { }' parsed: YES
selector ':is(foobar,a b,#123id) { }' parsed: YES
selector ':is(foobar,a b,[]) { }' parsed: YES
selector ':is(foobar,a b,()) { }' parsed: YES
selector ':is(foobar,a b,)) { }' parsed: NO
selector ':is(foobar,a b,{}) { }' parsed: YES
selector ':is(foobar,a b,}) { }' parsed: YES
selector ':is(foobar,a b,:not() { }' parsed: NO
selector ':is(foobar,a b,:is() { }' parsed: NO
selector ':is(foobar,a b,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar,a ~ b,) { }' parsed: YES
selector ':is(foobar,a ~ b, ) { }' parsed: YES
selector ':is(foobar,a ~ b,,) { }' parsed: YES
selector ':is(foobar,a ~ b,.123class) { }' parsed: YES
selector ':is(foobar,a ~ b,#123id) { }' parsed: YES
selector ':is(foobar,a ~ b,[]) { }' parsed: YES
selector ':is(foobar,a ~ b,()) { }' parsed: YES
selector ':is(foobar,a ~ b,)) { }' parsed: NO
selector ':is(foobar,a ~ b,{}) { }' parsed: YES
selector ':is(foobar,a ~ b,}) { }' parsed: YES
selector ':is(foobar,a ~ b,:not() { }' parsed: NO
selector ':is(foobar,a ~ b,:is() { }' parsed: NO
selector ':is(foobar,a ~ b,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar,:-webkit-any(.selector,#tama,#hanayo,#midoriko),) { }' parsed: YES
selector ':is(foobar,:-webkit-any(.selector,#tama,#hanayo,#midoriko), ) { }' parsed: YES
selector ':is(foobar,:-webkit-any(.selector,#tama,#hanayo,#midoriko),,) { }' parsed: YES
selector ':is(foobar,:-webkit-any(.selector,#tama,#hanayo,#midoriko),.123class) { }' parsed: YES
selector ':is(foobar,:-webkit-any(.selector,#tama,#hanayo,#midoriko),#123id) { }' parsed: YES
selector ':is(foobar,:-webkit-any(.selector,#tama,#hanayo,#midoriko),[]) { }' parsed: YES
selector ':is(foobar,:-webkit-any(.selector,#tama,#hanayo,#midoriko),()) { }' parsed: YES
selector ':is(foobar,:-webkit-any(.selector,#tama,#hanayo,#midoriko),)) { }' parsed: NO
selector ':is(foobar,:-webkit-any(.selector,#tama,#hanayo,#midoriko),{}) { }' parsed: YES
selector ':is(foobar,:-webkit-any(.selector,#tama,#hanayo,#midoriko),}) { }' parsed: YES
selector ':is(foobar,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not() { }' parsed: NO
selector ':is(foobar,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:is() { }' parsed: NO
selector ':is(foobar,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar,:nth-child(even of a, b, c),) { }' parsed: YES
selector ':is(foobar,:nth-child(even of a, b, c), ) { }' parsed: YES
selector ':is(foobar,:nth-child(even of a, b, c),,) { }' parsed: YES
selector ':is(foobar,:nth-child(even of a, b, c),.123class) { }' parsed: YES
selector ':is(foobar,:nth-child(even of a, b, c),#123id) { }' parsed: YES
selector ':is(foobar,:nth-child(even of a, b, c),[]) { }' parsed: YES
selector ':is(foobar,:nth-child(even of a, b, c),()) { }' parsed: YES
selector ':is(foobar,:nth-child(even of a, b, c),)) { }' parsed: NO
selector ':is(foobar,:nth-child(even of a, b, c),{}) { }' parsed: YES
selector ':is(foobar,:nth-child(even of a, b, c),}) { }' parsed: YES
selector ':is(foobar,:nth-child(even of a, b, c),:not() { }' parsed: NO
selector ':is(foobar,:nth-child(even of a, b, c),:is() { }' parsed: NO
selector ':is(foobar,:nth-child(even of a, b, c),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar,:not(:is(cocoa, cappuccino)),) { }' parsed: YES
selector ':is(foobar,:not(:is(cocoa, cappuccino)), ) { }' parsed: YES
selector ':is(foobar,:not(:is(cocoa, cappuccino)),,) { }' parsed: YES
selector ':is(foobar,:not(:is(cocoa, cappuccino)),.123class) { }' parsed: YES
selector ':is(foobar,:not(:is(cocoa, cappuccino)),#123id) { }' parsed: YES
selector ':is(foobar,:not(:is(cocoa, cappuccino)),[]) { }' parsed: YES
selector ':is(foobar,:not(:is(cocoa, cappuccino)),()) { }' parsed: YES
selector ':is(foobar,:not(:is(cocoa, cappuccino)),)) { }' parsed: NO
selector ':is(foobar,:not(:is(cocoa, cappuccino)),{}) { }' parsed: YES
selector ':is(foobar,:not(:is(cocoa, cappuccino)),}) { }' parsed: YES
selector ':is(foobar,:not(:is(cocoa, cappuccino)),:not() { }' parsed: NO
selector ':is(foobar,:not(:is(cocoa, cappuccino)),:is() { }' parsed: NO
selector ':is(foobar,:not(:is(cocoa, cappuccino)),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(.class,.class,) { }' parsed: YES
selector ':is(.class,.class, ) { }' parsed: YES
selector ':is(.class,.class,,) { }' parsed: YES
selector ':is(.class,.class,.123class) { }' parsed: YES
selector ':is(.class,.class,#123id) { }' parsed: YES
selector ':is(.class,.class,[]) { }' parsed: YES
selector ':is(.class,.class,()) { }' parsed: YES
selector ':is(.class,.class,)) { }' parsed: NO
selector ':is(.class,.class,{}) { }' parsed: YES
selector ':is(.class,.class,}) { }' parsed: YES
selector ':is(.class,.class,:not() { }' parsed: NO
selector ':is(.class,.class,:is() { }' parsed: NO
selector ':is(.class,.class,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(.class,:last-child,) { }' parsed: YES
selector ':is(.class,:last-child, ) { }' parsed: YES
selector ':is(.class,:last-child,,) { }' parsed: YES
selector ':is(.class,:last-child,.123class) { }' parsed: YES
selector ':is(.class,:last-child,#123id) { }' parsed: YES
selector ':is(.class,:last-child,[]) { }' parsed: YES
selector ':is(.class,:last-child,()) { }' parsed: YES
selector ':is(.class,:last-child,)) { }' parsed: NO
selector ':is(.class,:last-child,{}) { }' parsed: YES
selector ':is(.class,:last-child,}) { }' parsed: YES
selector ':is(.class,:last-child,:not() { }' parsed: NO
selector ':is(.class,:last-child,:is() { }' parsed: NO
selector ':is(.class,:last-child,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(.class,::first-letter,) { }' parsed: YES
selector ':is(.class,::first-letter, ) { }' parsed: YES
selector ':is(.class,::first-letter,,) { }' parsed: YES
selector ':is(.class,::first-letter,.123class) { }' parsed: YES
selector ':is(.class,::first-letter,#123id) { }' parsed: YES
selector ':is(.class,::first-letter,[]) { }' parsed: YES
selector ':is(.class,::first-letter,()) { }' parsed: YES
selector ':is(.class,::first-letter,)) { }' parsed: NO
selector ':is(.class,::first-letter,{}) { }' parsed: YES
selector ':is(.class,::first-letter,}) { }' parsed: YES
selector ':is(.class,::first-letter,:not() { }' parsed: NO
selector ':is(.class,::first-letter,:is() { }' parsed: NO
selector ':is(.class,::first-letter,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(.class,::before,) { }' parsed: YES
selector ':is(.class,::before, ) { }' parsed: YES
selector ':is(.class,::before,,) { }' parsed: YES
selector ':is(.class,::before,.123class) { }' parsed: YES
selector ':is(.class,::before,#123id) { }' parsed: YES
selector ':is(.class,::before,[]) { }' parsed: YES
selector ':is(.class,::before,()) { }' parsed: YES
selector ':is(.class,::before,)) { }' parsed: NO
selector ':is(.class,::before,{}) { }' parsed: YES
selector ':is(.class,::before,}) { }' parsed: YES
selector ':is(.class,::before,:not() { }' parsed: NO
selector ':is(.class,::before,:is() { }' parsed: NO
selector ':is(.class,::before,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(.class,foobar#id.class,) { }' parsed: YES
selector ':is(.class,foobar#id.class, ) { }' parsed: YES
selector ':is(.class,foobar#id.class,,) { }' parsed: YES
selector ':is(.class,foobar#id.class,.123class) { }' parsed: YES
selector ':is(.class,foobar#id.class,#123id) { }' parsed: YES
selector ':is(.class,foobar#id.class,[]) { }' parsed: YES
selector ':is(.class,foobar#id.class,()) { }' parsed: YES
selector ':is(.class,foobar#id.class,)) { }' parsed: NO
selector ':is(.class,foobar#id.class,{}) { }' parsed: YES
selector ':is(.class,foobar#id.class,}) { }' parsed: YES
selector ':is(.class,foobar#id.class,:not() { }' parsed: NO
selector ':is(.class,foobar#id.class,:is() { }' parsed: NO
selector ':is(.class,foobar#id.class,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(.class,#id:empty,) { }' parsed: YES
selector ':is(.class,#id:empty, ) { }' parsed: YES
selector ':is(.class,#id:empty,,) { }' parsed: YES
selector ':is(.class,#id:empty,.123class) { }' parsed: YES
selector ':is(.class,#id:empty,#123id) { }' parsed: YES
selector ':is(.class,#id:empty,[]) { }' parsed: YES
selector ':is(.class,#id:empty,()) { }' parsed: YES
selector ':is(.class,#id:empty,)) { }' parsed: NO
selector ':is(.class,#id:empty,{}) { }' parsed: YES
selector ':is(.class,#id:empty,}) { }' parsed: YES
selector ':is(.class,#id:empty,:not() { }' parsed: NO
selector ':is(.class,#id:empty,:is() { }' parsed: NO
selector ':is(.class,#id:empty,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(.class,a b,) { }' parsed: YES
selector ':is(.class,a b, ) { }' parsed: YES
selector ':is(.class,a b,,) { }' parsed: YES
selector ':is(.class,a b,.123class) { }' parsed: YES
selector ':is(.class,a b,#123id) { }' parsed: YES
selector ':is(.class,a b,[]) { }' parsed: YES
selector ':is(.class,a b,()) { }' parsed: YES
selector ':is(.class,a b,)) { }' parsed: NO
selector ':is(.class,a b,{}) { }' parsed: YES
selector ':is(.class,a b,}) { }' parsed: YES
selector ':is(.class,a b,:not() { }' parsed: NO
selector ':is(.class,a b,:is() { }' parsed: NO
selector ':is(.class,a b,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(.class,a ~ b,) { }' parsed: YES
selector ':is(.class,a ~ b, ) { }' parsed: YES
selector ':is(.class,a ~ b,,) { }' parsed: YES
selector ':is(.class,a ~ b,.123class) { }' parsed: YES
selector ':is(.class,a ~ b,#123id) { }' parsed: YES
selector ':is(.class,a ~ b,[]) { }' parsed: YES
selector ':is(.class,a ~ b,()) { }' parsed: YES
selector ':is(.class,a ~ b,)) { }' parsed: NO
selector ':is(.class,a ~ b,{}) { }' parsed: YES
selector ':is(.class,a ~ b,}) { }' parsed: YES
selector ':is(.class,a ~ b,:not() { }' parsed: NO
selector ':is(.class,a ~ b,:is() { }' parsed: NO
selector ':is(.class,a ~ b,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),) { }' parsed: YES
selector ':is(.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko), ) { }' parsed: YES
selector ':is(.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),,) { }' parsed: YES
selector ':is(.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),.123class) { }' parsed: YES
selector ':is(.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),#123id) { }' parsed: YES
selector ':is(.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),[]) { }' parsed: YES
selector ':is(.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),()) { }' parsed: YES
selector ':is(.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),)) { }' parsed: NO
selector ':is(.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),{}) { }' parsed: YES
selector ':is(.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),}) { }' parsed: YES
selector ':is(.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not() { }' parsed: NO
selector ':is(.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:is() { }' parsed: NO
selector ':is(.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(.class,:nth-child(even of a, b, c),) { }' parsed: YES
selector ':is(.class,:nth-child(even of a, b, c), ) { }' parsed: YES
selector ':is(.class,:nth-child(even of a, b, c),,) { }' parsed: YES
selector ':is(.class,:nth-child(even of a, b, c),.123class) { }' parsed: YES
selector ':is(.class,:nth-child(even of a, b, c),#123id) { }' parsed: YES
selector ':is(.class,:nth-child(even of a, b, c),[]) { }' parsed: YES
selector ':is(.class,:nth-child(even of a, b, c),()) { }' parsed: YES
selector ':is(.class,:nth-child(even of a, b, c),)) { }' parsed: NO
selector ':is(.class,:nth-child(even of a, b, c),{}) { }' parsed: YES
selector ':is(.class,:nth-child(even of a, b, c),}) { }' parsed: YES
selector ':is(.class,:nth-child(even of a, b, c),:not() { }' parsed: NO
selector ':is(.class,:nth-child(even of a, b, c),:is() { }' parsed: NO
selector ':is(.class,:nth-child(even of a, b, c),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(.class,:not(:is(cocoa, cappuccino)),) { }' parsed: YES
selector ':is(.class,:not(:is(cocoa, cappuccino)), ) { }' parsed: YES
selector ':is(.class,:not(:is(cocoa, cappuccino)),,) { }' parsed: YES
selector ':is(.class,:not(:is(cocoa, cappuccino)),.123class) { }' parsed: YES
selector ':is(.class,:not(:is(cocoa, cappuccino)),#123id) { }' parsed: YES
selector ':is(.class,:not(:is(cocoa, cappuccino)),[]) { }' parsed: YES
selector ':is(.class,:not(:is(cocoa, cappuccino)),()) { }' parsed: YES
selector ':is(.class,:not(:is(cocoa, cappuccino)),)) { }' parsed: NO
selector ':is(.class,:not(:is(cocoa, cappuccino)),{}) { }' parsed: YES
selector ':is(.class,:not(:is(cocoa, cappuccino)),}) { }' parsed: YES
selector ':is(.class,:not(:is(cocoa, cappuccino)),:not() { }' parsed: NO
selector ':is(.class,:not(:is(cocoa, cappuccino)),:is() { }' parsed: NO
selector ':is(.class,:not(:is(cocoa, cappuccino)),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(:last-child,:last-child,) { }' parsed: YES
selector ':is(:last-child,:last-child, ) { }' parsed: YES
selector ':is(:last-child,:last-child,,) { }' parsed: YES
selector ':is(:last-child,:last-child,.123class) { }' parsed: YES
selector ':is(:last-child,:last-child,#123id) { }' parsed: YES
selector ':is(:last-child,:last-child,[]) { }' parsed: YES
selector ':is(:last-child,:last-child,()) { }' parsed: YES
selector ':is(:last-child,:last-child,)) { }' parsed: NO
selector ':is(:last-child,:last-child,{}) { }' parsed: YES
selector ':is(:last-child,:last-child,}) { }' parsed: YES
selector ':is(:last-child,:last-child,:not() { }' parsed: NO
selector ':is(:last-child,:last-child,:is() { }' parsed: NO
selector ':is(:last-child,:last-child,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(:last-child,::first-letter,) { }' parsed: YES
selector ':is(:last-child,::first-letter, ) { }' parsed: YES
selector ':is(:last-child,::first-letter,,) { }' parsed: YES
selector ':is(:last-child,::first-letter,.123class) { }' parsed: YES
selector ':is(:last-child,::first-letter,#123id) { }' parsed: YES
selector ':is(:last-child,::first-letter,[]) { }' parsed: YES
selector ':is(:last-child,::first-letter,()) { }' parsed: YES
selector ':is(:last-child,::first-letter,)) { }' parsed: NO
selector ':is(:last-child,::first-letter,{}) { }' parsed: YES
selector ':is(:last-child,::first-letter,}) { }' parsed: YES
selector ':is(:last-child,::first-letter,:not() { }' parsed: NO
selector ':is(:last-child,::first-letter,:is() { }' parsed: NO
selector ':is(:last-child,::first-letter,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(:last-child,::before,) { }' parsed: YES
selector ':is(:last-child,::before, ) { }' parsed: YES
selector ':is(:last-child,::before,,) { }' parsed: YES
selector ':is(:last-child,::before,.123class) { }' parsed: YES
selector ':is(:last-child,::before,#123id) { }' parsed: YES
selector ':is(:last-child,::before,[]) { }' parsed: YES
selector ':is(:last-child,::before,()) { }' parsed: YES
selector ':is(:last-child,::before,)) { }' parsed: NO
selector ':is(:last-child,::before,{}) { }' parsed: YES
selector ':is(:last-child,::before,}) { }' parsed: YES
selector ':is(:last-child,::before,:not() { }' parsed: NO
selector ':is(:last-child,::before,:is() { }' parsed: NO
selector ':is(:last-child,::before,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(:last-child,foobar#id.class,) { }' parsed: YES
selector ':is(:last-child,foobar#id.class, ) { }' parsed: YES
selector ':is(:last-child,foobar#id.class,,) { }' parsed: YES
selector ':is(:last-child,foobar#id.class,.123class) { }' parsed: YES
selector ':is(:last-child,foobar#id.class,#123id) { }' parsed: YES
selector ':is(:last-child,foobar#id.class,[]) { }' parsed: YES
selector ':is(:last-child,foobar#id.class,()) { }' parsed: YES
selector ':is(:last-child,foobar#id.class,)) { }' parsed: NO
selector ':is(:last-child,foobar#id.class,{}) { }' parsed: YES
selector ':is(:last-child,foobar#id.class,}) { }' parsed: YES
selector ':is(:last-child,foobar#id.class,:not() { }' parsed: NO
selector ':is(:last-child,foobar#id.class,:is() { }' parsed: NO
selector ':is(:last-child,foobar#id.class,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(:last-child,#id:empty,) { }' parsed: YES
selector ':is(:last-child,#id:empty, ) { }' parsed: YES
selector ':is(:last-child,#id:empty,,) { }' parsed: YES
selector ':is(:last-child,#id:empty,.123class) { }' parsed: YES
selector ':is(:last-child,#id:empty,#123id) { }' parsed: YES
selector ':is(:last-child,#id:empty,[]) { }' parsed: YES
selector ':is(:last-child,#id:empty,()) { }' parsed: YES
selector ':is(:last-child,#id:empty,)) { }' parsed: NO
selector ':is(:last-child,#id:empty,{}) { }' parsed: YES
selector ':is(:last-child,#id:empty,}) { }' parsed: YES
selector ':is(:last-child,#id:empty,:not() { }' parsed: NO
selector ':is(:last-child,#id:empty,:is() { }' parsed: NO
selector ':is(:last-child,#id:empty,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(:last-child,a b,) { }' parsed: YES
selector ':is(:last-child,a b, ) { }' parsed: YES
selector ':is(:last-child,a b,,) { }' parsed: YES
selector ':is(:last-child,a b,.123class) { }' parsed: YES
selector ':is(:last-child,a b,#123id) { }' parsed: YES
selector ':is(:last-child,a b,[]) { }' parsed: YES
selector ':is(:last-child,a b,()) { }' parsed: YES
selector ':is(:last-child,a b,)) { }' parsed: NO
selector ':is(:last-child,a b,{}) { }' parsed: YES
selector ':is(:last-child,a b,}) { }' parsed: YES
selector ':is(:last-child,a b,:not() { }' parsed: NO
selector ':is(:last-child,a b,:is() { }' parsed: NO
selector ':is(:last-child,a b,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(:last-child,a ~ b,) { }' parsed: YES
selector ':is(:last-child,a ~ b, ) { }' parsed: YES
selector ':is(:last-child,a ~ b,,) { }' parsed: YES
selector ':is(:last-child,a ~ b,.123class) { }' parsed: YES
selector ':is(:last-child,a ~ b,#123id) { }' parsed: YES
selector ':is(:last-child,a ~ b,[]) { }' parsed: YES
selector ':is(:last-child,a ~ b,()) { }' parsed: YES
selector ':is(:last-child,a ~ b,)) { }' parsed: NO
selector ':is(:last-child,a ~ b,{}) { }' parsed: YES
selector ':is(:last-child,a ~ b,}) { }' parsed: YES
selector ':is(:last-child,a ~ b,:not() { }' parsed: NO
selector ':is(:last-child,a ~ b,:is() { }' parsed: NO
selector ':is(:last-child,a ~ b,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(:last-child,:-webkit-any(.selector,#tama,#hanayo,#midoriko),) { }' parsed: YES
selector ':is(:last-child,:-webkit-any(.selector,#tama,#hanayo,#midoriko), ) { }' parsed: YES
selector ':is(:last-child,:-webkit-any(.selector,#tama,#hanayo,#midoriko),,) { }' parsed: YES
selector ':is(:last-child,:-webkit-any(.selector,#tama,#hanayo,#midoriko),.123class) { }' parsed: YES
selector ':is(:last-child,:-webkit-any(.selector,#tama,#hanayo,#midoriko),#123id) { }' parsed: YES
selector ':is(:last-child,:-webkit-any(.selector,#tama,#hanayo,#midoriko),[]) { }' parsed: YES
selector ':is(:last-child,:-webkit-any(.selector,#tama,#hanayo,#midoriko),()) { }' parsed: YES
selector ':is(:last-child,:-webkit-any(.selector,#tama,#hanayo,#midoriko),)) { }' parsed: NO
selector ':is(:last-child,:-webkit-any(.selector,#tama,#hanayo,#midoriko),{}) { }' parsed: YES
selector ':is(:last-child,:-webkit-any(.selector,#tama,#hanayo,#midoriko),}) { }' parsed: YES
selector ':is(:last-child,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not() { }' parsed: NO
selector ':is(:last-child,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:is() { }' parsed: NO
selector ':is(:last-child,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(:last-child,:nth-child(even of a, b, c),) { }' parsed: YES
selector ':is(:last-child,:nth-child(even of a, b, c), ) { }' parsed: YES
selector ':is(:last-child,:nth-child(even of a, b, c),,) { }' parsed: YES
selector ':is(:last-child,:nth-child(even of a, b, c),.123class) { }' parsed: YES
selector ':is(:last-child,:nth-child(even of a, b, c),#123id) { }' parsed: YES
selector ':is(:last-child,:nth-child(even of a, b, c),[]) { }' parsed: YES
selector ':is(:last-child,:nth-child(even of a, b, c),()) { }' parsed: YES
selector ':is(:last-child,:nth-child(even of a, b, c),)) { }' parsed: NO
selector ':is(:last-child,:nth-child(even of a, b, c),{}) { }' parsed: YES
selector ':is(:last-child,:nth-child(even of a, b, c),}) { }' parsed: YES
selector ':is(:last-child,:nth-child(even of a, b, c),:not() { }' parsed: NO
selector ':is(:last-child,:nth-child(even of a, b, c),:is() { }' parsed: NO
selector ':is(:last-child,:nth-child(even of a, b, c),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(:last-child,:not(:is(cocoa, cappuccino)),) { }' parsed: YES
selector ':is(:last-child,:not(:is(cocoa, cappuccino)), ) { }' parsed: YES
selector ':is(:last-child,:not(:is(cocoa, cappuccino)),,) { }' parsed: YES
selector ':is(:last-child,:not(:is(cocoa, cappuccino)),.123class) { }' parsed: YES
selector ':is(:last-child,:not(:is(cocoa, cappuccino)),#123id) { }' parsed: YES
selector ':is(:last-child,:not(:is(cocoa, cappuccino)),[]) { }' parsed: YES
selector ':is(:last-child,:not(:is(cocoa, cappuccino)),()) { }' parsed: YES
selector ':is(:last-child,:not(:is(cocoa, cappuccino)),)) { }' parsed: NO
selector ':is(:last-child,:not(:is(cocoa, cappuccino)),{}) { }' parsed: YES
selector ':is(:last-child,:not(:is(cocoa, cappuccino)),}) { }' parsed: YES
selector ':is(:last-child,:not(:is(cocoa, cappuccino)),:not() { }' parsed: NO
selector ':is(:last-child,:not(:is(cocoa, cappuccino)),:is() { }' parsed: NO
selector ':is(:last-child,:not(:is(cocoa, cappuccino)),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(::first-letter,::first-letter,) { }' parsed: YES
selector ':is(::first-letter,::first-letter, ) { }' parsed: YES
selector ':is(::first-letter,::first-letter,,) { }' parsed: YES
selector ':is(::first-letter,::first-letter,.123class) { }' parsed: YES
selector ':is(::first-letter,::first-letter,#123id) { }' parsed: YES
selector ':is(::first-letter,::first-letter,[]) { }' parsed: YES
selector ':is(::first-letter,::first-letter,()) { }' parsed: YES
selector ':is(::first-letter,::first-letter,)) { }' parsed: NO
selector ':is(::first-letter,::first-letter,{}) { }' parsed: YES
selector ':is(::first-letter,::first-letter,}) { }' parsed: YES
selector ':is(::first-letter,::first-letter,:not() { }' parsed: NO
selector ':is(::first-letter,::first-letter,:is() { }' parsed: NO
selector ':is(::first-letter,::first-letter,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(::first-letter,::before,) { }' parsed: YES
selector ':is(::first-letter,::before, ) { }' parsed: YES
selector ':is(::first-letter,::before,,) { }' parsed: YES
selector ':is(::first-letter,::before,.123class) { }' parsed: YES
selector ':is(::first-letter,::before,#123id) { }' parsed: YES
selector ':is(::first-letter,::before,[]) { }' parsed: YES
selector ':is(::first-letter,::before,()) { }' parsed: YES
selector ':is(::first-letter,::before,)) { }' parsed: NO
selector ':is(::first-letter,::before,{}) { }' parsed: YES
selector ':is(::first-letter,::before,}) { }' parsed: YES
selector ':is(::first-letter,::before,:not() { }' parsed: NO
selector ':is(::first-letter,::before,:is() { }' parsed: NO
selector ':is(::first-letter,::before,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(::first-letter,foobar#id.class,) { }' parsed: YES
selector ':is(::first-letter,foobar#id.class, ) { }' parsed: YES
selector ':is(::first-letter,foobar#id.class,,) { }' parsed: YES
selector ':is(::first-letter,foobar#id.class,.123class) { }' parsed: YES
selector ':is(::first-letter,foobar#id.class,#123id) { }' parsed: YES
selector ':is(::first-letter,foobar#id.class,[]) { }' parsed: YES
selector ':is(::first-letter,foobar#id.class,()) { }' parsed: YES
selector ':is(::first-letter,foobar#id.class,)) { }' parsed: NO
selector ':is(::first-letter,foobar#id.class,{}) { }' parsed: YES
selector ':is(::first-letter,foobar#id.class,}) { }' parsed: YES
selector ':is(::first-letter,foobar#id.class,:not() { }' parsed: NO
selector ':is(::first-letter,foobar#id.class,:is() { }' parsed: NO
selector ':is(::first-letter,foobar#id.class,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(::first-letter,#id:empty,) { }' parsed: YES
selector ':is(::first-letter,#id:empty, ) { }' parsed: YES
selector ':is(::first-letter,#id:empty,,) { }' parsed: YES
selector ':is(::first-letter,#id:empty,.123class) { }' parsed: YES
selector ':is(::first-letter,#id:empty,#123id) { }' parsed: YES
selector ':is(::first-letter,#id:empty,[]) { }' parsed: YES
selector ':is(::first-letter,#id:empty,()) { }' parsed: YES
selector ':is(::first-letter,#id:empty,)) { }' parsed: NO
selector ':is(::first-letter,#id:empty,{}) { }' parsed: YES
selector ':is(::first-letter,#id:empty,}) { }' parsed: YES
selector ':is(::first-letter,#id:empty,:not() { }' parsed: NO
selector ':is(::first-letter,#id:empty,:is() { }' parsed: NO
selector ':is(::first-letter,#id:empty,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(::first-letter,a b,) { }' parsed: YES
selector ':is(::first-letter,a b, ) { }' parsed: YES
selector ':is(::first-letter,a b,,) { }' parsed: YES
selector ':is(::first-letter,a b,.123class) { }' parsed: YES
selector ':is(::first-letter,a b,#123id) { }' parsed: YES
selector ':is(::first-letter,a b,[]) { }' parsed: YES
selector ':is(::first-letter,a b,()) { }' parsed: YES
selector ':is(::first-letter,a b,)) { }' parsed: NO
selector ':is(::first-letter,a b,{}) { }' parsed: YES
selector ':is(::first-letter,a b,}) { }' parsed: YES
selector ':is(::first-letter,a b,:not() { }' parsed: NO
selector ':is(::first-letter,a b,:is() { }' parsed: NO
selector ':is(::first-letter,a b,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(::first-letter,a ~ b,) { }' parsed: YES
selector ':is(::first-letter,a ~ b, ) { }' parsed: YES
selector ':is(::first-letter,a ~ b,,) { }' parsed: YES
selector ':is(::first-letter,a ~ b,.123class) { }' parsed: YES
selector ':is(::first-letter,a ~ b,#123id) { }' parsed: YES
selector ':is(::first-letter,a ~ b,[]) { }' parsed: YES
selector ':is(::first-letter,a ~ b,()) { }' parsed: YES
selector ':is(::first-letter,a ~ b,)) { }' parsed: NO
selector ':is(::first-letter,a ~ b,{}) { }' parsed: YES
selector ':is(::first-letter,a ~ b,}) { }' parsed: YES
selector ':is(::first-letter,a ~ b,:not() { }' parsed: NO
selector ':is(::first-letter,a ~ b,:is() { }' parsed: NO
selector ':is(::first-letter,a ~ b,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(::first-letter,:-webkit-any(.selector,#tama,#hanayo,#midoriko),) { }' parsed: YES
selector ':is(::first-letter,:-webkit-any(.selector,#tama,#hanayo,#midoriko), ) { }' parsed: YES
selector ':is(::first-letter,:-webkit-any(.selector,#tama,#hanayo,#midoriko),,) { }' parsed: YES
selector ':is(::first-letter,:-webkit-any(.selector,#tama,#hanayo,#midoriko),.123class) { }' parsed: YES
selector ':is(::first-letter,:-webkit-any(.selector,#tama,#hanayo,#midoriko),#123id) { }' parsed: YES
selector ':is(::first-letter,:-webkit-any(.selector,#tama,#hanayo,#midoriko),[]) { }' parsed: YES
selector ':is(::first-letter,:-webkit-any(.selector,#tama,#hanayo,#midoriko),()) { }' parsed: YES
selector ':is(::first-letter,:-webkit-any(.selector,#tama,#hanayo,#midoriko),)) { }' parsed: NO
selector ':is(::first-letter,:-webkit-any(.selector,#tama,#hanayo,#midoriko),{}) { }' parsed: YES
selector ':is(::first-letter,:-webkit-any(.selector,#tama,#hanayo,#midoriko),}) { }' parsed: YES
selector ':is(::first-letter,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not() { }' parsed: NO
selector ':is(::first-letter,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:is() { }' parsed: NO
selector ':is(::first-letter,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(::first-letter,:nth-child(even of a, b, c),) { }' parsed: YES
selector ':is(::first-letter,:nth-child(even of a, b, c), ) { }' parsed: YES
selector ':is(::first-letter,:nth-child(even of a, b, c),,) { }' parsed: YES
selector ':is(::first-letter,:nth-child(even of a, b, c),.123class) { }' parsed: YES
selector ':is(::first-letter,:nth-child(even of a, b, c),#123id) { }' parsed: YES
selector ':is(::first-letter,:nth-child(even of a, b, c),[]) { }' parsed: YES
selector ':is(::first-letter,:nth-child(even of a, b, c),()) { }' parsed: YES
selector ':is(::first-letter,:nth-child(even of a, b, c),)) { }' parsed: NO
selector ':is(::first-letter,:nth-child(even of a, b, c),{}) { }' parsed: YES
selector ':is(::first-letter,:nth-child(even of a, b, c),}) { }' parsed: YES
selector ':is(::first-letter,:nth-child(even of a, b, c),:not() { }' parsed: NO
selector ':is(::first-letter,:nth-child(even of a, b, c),:is() { }' parsed: NO
selector ':is(::first-letter,:nth-child(even of a, b, c),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(::first-letter,:not(:is(cocoa, cappuccino)),) { }' parsed: YES
selector ':is(::first-letter,:not(:is(cocoa, cappuccino)), ) { }' parsed: YES
selector ':is(::first-letter,:not(:is(cocoa, cappuccino)),,) { }' parsed: YES
selector ':is(::first-letter,:not(:is(cocoa, cappuccino)),.123class) { }' parsed: YES
selector ':is(::first-letter,:not(:is(cocoa, cappuccino)),#123id) { }' parsed: YES
selector ':is(::first-letter,:not(:is(cocoa, cappuccino)),[]) { }' parsed: YES
selector ':is(::first-letter,:not(:is(cocoa, cappuccino)),()) { }' parsed: YES
selector ':is(::first-letter,:not(:is(cocoa, cappuccino)),)) { }' parsed: NO
selector ':is(::first-letter,:not(:is(cocoa, cappuccino)),{}) { }' parsed: YES
selector ':is(::first-letter,:not(:is(cocoa, cappuccino)),}) { }' parsed: YES
selector ':is(::first-letter,:not(:is(cocoa, cappuccino)),:not() { }' parsed: NO
selector ':is(::first-letter,:not(:is(cocoa, cappuccino)),:is() { }' parsed: NO
selector ':is(::first-letter,:not(:is(cocoa, cappuccino)),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(::before,::before,) { }' parsed: YES
selector ':is(::before,::before, ) { }' parsed: YES
selector ':is(::before,::before,,) { }' parsed: YES
selector ':is(::before,::before,.123class) { }' parsed: YES
selector ':is(::before,::before,#123id) { }' parsed: YES
selector ':is(::before,::before,[]) { }' parsed: YES
selector ':is(::before,::before,()) { }' parsed: YES
selector ':is(::before,::before,)) { }' parsed: NO
selector ':is(::before,::before,{}) { }' parsed: YES
selector ':is(::before,::before,}) { }' parsed: YES
selector ':is(::before,::before,:not() { }' parsed: NO
selector ':is(::before,::before,:is() { }' parsed: NO
selector ':is(::before,::before,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(::before,foobar#id.class,) { }' parsed: YES
selector ':is(::before,foobar#id.class, ) { }' parsed: YES
selector ':is(::before,foobar#id.class,,) { }' parsed: YES
selector ':is(::before,foobar#id.class,.123class) { }' parsed: YES
selector ':is(::before,foobar#id.class,#123id) { }' parsed: YES
selector ':is(::before,foobar#id.class,[]) { }' parsed: YES
selector ':is(::before,foobar#id.class,()) { }' parsed: YES
selector ':is(::before,foobar#id.class,)) { }' parsed: NO
selector ':is(::before,foobar#id.class,{}) { }' parsed: YES
selector ':is(::before,foobar#id.class,}) { }' parsed: YES
selector ':is(::before,foobar#id.class,:not() { }' parsed: NO
selector ':is(::before,foobar#id.class,:is() { }' parsed: NO
selector ':is(::before,foobar#id.class,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(::before,#id:empty,) { }' parsed: YES
selector ':is(::before,#id:empty, ) { }' parsed: YES
selector ':is(::before,#id:empty,,) { }' parsed: YES
selector ':is(::before,#id:empty,.123class) { }' parsed: YES
selector ':is(::before,#id:empty,#123id) { }' parsed: YES
selector ':is(::before,#id:empty,[]) { }' parsed: YES
selector ':is(::before,#id:empty,()) { }' parsed: YES
selector ':is(::before,#id:empty,)) { }' parsed: NO
selector ':is(::before,#id:empty,{}) { }' parsed: YES
selector ':is(::before,#id:empty,}) { }' parsed: YES
selector ':is(::before,#id:empty,:not() { }' parsed: NO
selector ':is(::before,#id:empty,:is() { }' parsed: NO
selector ':is(::before,#id:empty,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(::before,a b,) { }' parsed: YES
selector ':is(::before,a b, ) { }' parsed: YES
selector ':is(::before,a b,,) { }' parsed: YES
selector ':is(::before,a b,.123class) { }' parsed: YES
selector ':is(::before,a b,#123id) { }' parsed: YES
selector ':is(::before,a b,[]) { }' parsed: YES
selector ':is(::before,a b,()) { }' parsed: YES
selector ':is(::before,a b,)) { }' parsed: NO
selector ':is(::before,a b,{}) { }' parsed: YES
selector ':is(::before,a b,}) { }' parsed: YES
selector ':is(::before,a b,:not() { }' parsed: NO
selector ':is(::before,a b,:is() { }' parsed: NO
selector ':is(::before,a b,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(::before,a ~ b,) { }' parsed: YES
selector ':is(::before,a ~ b, ) { }' parsed: YES
selector ':is(::before,a ~ b,,) { }' parsed: YES
selector ':is(::before,a ~ b,.123class) { }' parsed: YES
selector ':is(::before,a ~ b,#123id) { }' parsed: YES
selector ':is(::before,a ~ b,[]) { }' parsed: YES
selector ':is(::before,a ~ b,()) { }' parsed: YES
selector ':is(::before,a ~ b,)) { }' parsed: NO
selector ':is(::before,a ~ b,{}) { }' parsed: YES
selector ':is(::before,a ~ b,}) { }' parsed: YES
selector ':is(::before,a ~ b,:not() { }' parsed: NO
selector ':is(::before,a ~ b,:is() { }' parsed: NO
selector ':is(::before,a ~ b,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(::before,:-webkit-any(.selector,#tama,#hanayo,#midoriko),) { }' parsed: YES
selector ':is(::before,:-webkit-any(.selector,#tama,#hanayo,#midoriko), ) { }' parsed: YES
selector ':is(::before,:-webkit-any(.selector,#tama,#hanayo,#midoriko),,) { }' parsed: YES
selector ':is(::before,:-webkit-any(.selector,#tama,#hanayo,#midoriko),.123class) { }' parsed: YES
selector ':is(::before,:-webkit-any(.selector,#tama,#hanayo,#midoriko),#123id) { }' parsed: YES
selector ':is(::before,:-webkit-any(.selector,#tama,#hanayo,#midoriko),[]) { }' parsed: YES
selector ':is(::before,:-webkit-any(.selector,#tama,#hanayo,#midoriko),()) { }' parsed: YES
selector ':is(::before,:-webkit-any(.selector,#tama,#hanayo,#midoriko),)) { }' parsed: NO
selector ':is(::before,:-webkit-any(.selector,#tama,#hanayo,#midoriko),{}) { }' parsed: YES
selector ':is(::before,:-webkit-any(.selector,#tama,#hanayo,#midoriko),}) { }' parsed: YES
selector ':is(::before,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not() { }' parsed: NO
selector ':is(::before,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:is() { }' parsed: NO
selector ':is(::before,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(::before,:nth-child(even of a, b, c),) { }' parsed: YES
selector ':is(::before,:nth-child(even of a, b, c), ) { }' parsed: YES
selector ':is(::before,:nth-child(even of a, b, c),,) { }' parsed: YES
selector ':is(::before,:nth-child(even of a, b, c),.123class) { }' parsed: YES
selector ':is(::before,:nth-child(even of a, b, c),#123id) { }' parsed: YES
selector ':is(::before,:nth-child(even of a, b, c),[]) { }' parsed: YES
selector ':is(::before,:nth-child(even of a, b, c),()) { }' parsed: YES
selector ':is(::before,:nth-child(even of a, b, c),)) { }' parsed: NO
selector ':is(::before,:nth-child(even of a, b, c),{}) { }' parsed: YES
selector ':is(::before,:nth-child(even of a, b, c),}) { }' parsed: YES
selector ':is(::before,:nth-child(even of a, b, c),:not() { }' parsed: NO
selector ':is(::before,:nth-child(even of a, b, c),:is() { }' parsed: NO
selector ':is(::before,:nth-child(even of a, b, c),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(::before,:not(:is(cocoa, cappuccino)),) { }' parsed: YES
selector ':is(::before,:not(:is(cocoa, cappuccino)), ) { }' parsed: YES
selector ':is(::before,:not(:is(cocoa, cappuccino)),,) { }' parsed: YES
selector ':is(::before,:not(:is(cocoa, cappuccino)),.123class) { }' parsed: YES
selector ':is(::before,:not(:is(cocoa, cappuccino)),#123id) { }' parsed: YES
selector ':is(::before,:not(:is(cocoa, cappuccino)),[]) { }' parsed: YES
selector ':is(::before,:not(:is(cocoa, cappuccino)),()) { }' parsed: YES
selector ':is(::before,:not(:is(cocoa, cappuccino)),)) { }' parsed: NO
selector ':is(::before,:not(:is(cocoa, cappuccino)),{}) { }' parsed: YES
selector ':is(::before,:not(:is(cocoa, cappuccino)),}) { }' parsed: YES
selector ':is(::before,:not(:is(cocoa, cappuccino)),:not() { }' parsed: NO
selector ':is(::before,:not(:is(cocoa, cappuccino)),:is() { }' parsed: NO
selector ':is(::before,:not(:is(cocoa, cappuccino)),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar#id.class,foobar#id.class,) { }' parsed: YES
selector ':is(foobar#id.class,foobar#id.class, ) { }' parsed: YES
selector ':is(foobar#id.class,foobar#id.class,,) { }' parsed: YES
selector ':is(foobar#id.class,foobar#id.class,.123class) { }' parsed: YES
selector ':is(foobar#id.class,foobar#id.class,#123id) { }' parsed: YES
selector ':is(foobar#id.class,foobar#id.class,[]) { }' parsed: YES
selector ':is(foobar#id.class,foobar#id.class,()) { }' parsed: YES
selector ':is(foobar#id.class,foobar#id.class,)) { }' parsed: NO
selector ':is(foobar#id.class,foobar#id.class,{}) { }' parsed: YES
selector ':is(foobar#id.class,foobar#id.class,}) { }' parsed: YES
selector ':is(foobar#id.class,foobar#id.class,:not() { }' parsed: NO
selector ':is(foobar#id.class,foobar#id.class,:is() { }' parsed: NO
selector ':is(foobar#id.class,foobar#id.class,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar#id.class,#id:empty,) { }' parsed: YES
selector ':is(foobar#id.class,#id:empty, ) { }' parsed: YES
selector ':is(foobar#id.class,#id:empty,,) { }' parsed: YES
selector ':is(foobar#id.class,#id:empty,.123class) { }' parsed: YES
selector ':is(foobar#id.class,#id:empty,#123id) { }' parsed: YES
selector ':is(foobar#id.class,#id:empty,[]) { }' parsed: YES
selector ':is(foobar#id.class,#id:empty,()) { }' parsed: YES
selector ':is(foobar#id.class,#id:empty,)) { }' parsed: NO
selector ':is(foobar#id.class,#id:empty,{}) { }' parsed: YES
selector ':is(foobar#id.class,#id:empty,}) { }' parsed: YES
selector ':is(foobar#id.class,#id:empty,:not() { }' parsed: NO
selector ':is(foobar#id.class,#id:empty,:is() { }' parsed: NO
selector ':is(foobar#id.class,#id:empty,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar#id.class,a b,) { }' parsed: YES
selector ':is(foobar#id.class,a b, ) { }' parsed: YES
selector ':is(foobar#id.class,a b,,) { }' parsed: YES
selector ':is(foobar#id.class,a b,.123class) { }' parsed: YES
selector ':is(foobar#id.class,a b,#123id) { }' parsed: YES
selector ':is(foobar#id.class,a b,[]) { }' parsed: YES
selector ':is(foobar#id.class,a b,()) { }' parsed: YES
selector ':is(foobar#id.class,a b,)) { }' parsed: NO
selector ':is(foobar#id.class,a b,{}) { }' parsed: YES
selector ':is(foobar#id.class,a b,}) { }' parsed: YES
selector ':is(foobar#id.class,a b,:not() { }' parsed: NO
selector ':is(foobar#id.class,a b,:is() { }' parsed: NO
selector ':is(foobar#id.class,a b,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar#id.class,a ~ b,) { }' parsed: YES
selector ':is(foobar#id.class,a ~ b, ) { }' parsed: YES
selector ':is(foobar#id.class,a ~ b,,) { }' parsed: YES
selector ':is(foobar#id.class,a ~ b,.123class) { }' parsed: YES
selector ':is(foobar#id.class,a ~ b,#123id) { }' parsed: YES
selector ':is(foobar#id.class,a ~ b,[]) { }' parsed: YES
selector ':is(foobar#id.class,a ~ b,()) { }' parsed: YES
selector ':is(foobar#id.class,a ~ b,)) { }' parsed: NO
selector ':is(foobar#id.class,a ~ b,{}) { }' parsed: YES
selector ':is(foobar#id.class,a ~ b,}) { }' parsed: YES
selector ':is(foobar#id.class,a ~ b,:not() { }' parsed: NO
selector ':is(foobar#id.class,a ~ b,:is() { }' parsed: NO
selector ':is(foobar#id.class,a ~ b,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar#id.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),) { }' parsed: YES
selector ':is(foobar#id.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko), ) { }' parsed: YES
selector ':is(foobar#id.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),,) { }' parsed: YES
selector ':is(foobar#id.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),.123class) { }' parsed: YES
selector ':is(foobar#id.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),#123id) { }' parsed: YES
selector ':is(foobar#id.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),[]) { }' parsed: YES
selector ':is(foobar#id.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),()) { }' parsed: YES
selector ':is(foobar#id.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),)) { }' parsed: NO
selector ':is(foobar#id.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),{}) { }' parsed: YES
selector ':is(foobar#id.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),}) { }' parsed: YES
selector ':is(foobar#id.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not() { }' parsed: NO
selector ':is(foobar#id.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:is() { }' parsed: NO
selector ':is(foobar#id.class,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar#id.class,:nth-child(even of a, b, c),) { }' parsed: YES
selector ':is(foobar#id.class,:nth-child(even of a, b, c), ) { }' parsed: YES
selector ':is(foobar#id.class,:nth-child(even of a, b, c),,) { }' parsed: YES
selector ':is(foobar#id.class,:nth-child(even of a, b, c),.123class) { }' parsed: YES
selector ':is(foobar#id.class,:nth-child(even of a, b, c),#123id) { }' parsed: YES
selector ':is(foobar#id.class,:nth-child(even of a, b, c),[]) { }' parsed: YES
selector ':is(foobar#id.class,:nth-child(even of a, b, c),()) { }' parsed: YES
selector ':is(foobar#id.class,:nth-child(even of a, b, c),)) { }' parsed: NO
selector ':is(foobar#id.class,:nth-child(even of a, b, c),{}) { }' parsed: YES
selector ':is(foobar#id.class,:nth-child(even of a, b, c),}) { }' parsed: YES
selector ':is(foobar#id.class,:nth-child(even of a, b, c),:not() { }' parsed: NO
selector ':is(foobar#id.class,:nth-child(even of a, b, c),:is() { }' parsed: NO
selector ':is(foobar#id.class,:nth-child(even of a, b, c),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(foobar#id.class,:not(:is(cocoa, cappuccino)),) { }' parsed: YES
selector ':is(foobar#id.class,:not(:is(cocoa, cappuccino)), ) { }' parsed: YES
selector ':is(foobar#id.class,:not(:is(cocoa, cappuccino)),,) { }' parsed: YES
selector ':is(foobar#id.class,:not(:is(cocoa, cappuccino)),.123class) { }' parsed: YES
selector ':is(foobar#id.class,:not(:is(cocoa, cappuccino)),#123id) { }' parsed: YES
selector ':is(foobar#id.class,:not(:is(cocoa, cappuccino)),[]) { }' parsed: YES
selector ':is(foobar#id.class,:not(:is(cocoa, cappuccino)),()) { }' parsed: YES
selector ':is(foobar#id.class,:not(:is(cocoa, cappuccino)),)) { }' parsed: NO
selector ':is(foobar#id.class,:not(:is(cocoa, cappuccino)),{}) { }' parsed: YES
selector ':is(foobar#id.class,:not(:is(cocoa, cappuccino)),}) { }' parsed: YES
selector ':is(foobar#id.class,:not(:is(cocoa, cappuccino)),:not() { }' parsed: NO
selector ':is(foobar#id.class,:not(:is(cocoa, cappuccino)),:is() { }' parsed: NO
selector ':is(foobar#id.class,:not(:is(cocoa, cappuccino)),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(#id:empty,#id:empty,) { }' parsed: YES
selector ':is(#id:empty,#id:empty, ) { }' parsed: YES
selector ':is(#id:empty,#id:empty,,) { }' parsed: YES
selector ':is(#id:empty,#id:empty,.123class) { }' parsed: YES
selector ':is(#id:empty,#id:empty,#123id) { }' parsed: YES
selector ':is(#id:empty,#id:empty,[]) { }' parsed: YES
selector ':is(#id:empty,#id:empty,()) { }' parsed: YES
selector ':is(#id:empty,#id:empty,)) { }' parsed: NO
selector ':is(#id:empty,#id:empty,{}) { }' parsed: YES
selector ':is(#id:empty,#id:empty,}) { }' parsed: YES
selector ':is(#id:empty,#id:empty,:not() { }' parsed: NO
selector ':is(#id:empty,#id:empty,:is() { }' parsed: NO
selector ':is(#id:empty,#id:empty,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(#id:empty,a b,) { }' parsed: YES
selector ':is(#id:empty,a b, ) { }' parsed: YES
selector ':is(#id:empty,a b,,) { }' parsed: YES
selector ':is(#id:empty,a b,.123class) { }' parsed: YES
selector ':is(#id:empty,a b,#123id) { }' parsed: YES
selector ':is(#id:empty,a b,[]) { }' parsed: YES
selector ':is(#id:empty,a b,()) { }' parsed: YES
selector ':is(#id:empty,a b,)) { }' parsed: NO
selector ':is(#id:empty,a b,{}) { }' parsed: YES
selector ':is(#id:empty,a b,}) { }' parsed: YES
selector ':is(#id:empty,a b,:not() { }' parsed: NO
selector ':is(#id:empty,a b,:is() { }' parsed: NO
selector ':is(#id:empty,a b,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(#id:empty,a ~ b,) { }' parsed: YES
selector ':is(#id:empty,a ~ b, ) { }' parsed: YES
selector ':is(#id:empty,a ~ b,,) { }' parsed: YES
selector ':is(#id:empty,a ~ b,.123class) { }' parsed: YES
selector ':is(#id:empty,a ~ b,#123id) { }' parsed: YES
selector ':is(#id:empty,a ~ b,[]) { }' parsed: YES
selector ':is(#id:empty,a ~ b,()) { }' parsed: YES
selector ':is(#id:empty,a ~ b,)) { }' parsed: NO
selector ':is(#id:empty,a ~ b,{}) { }' parsed: YES
selector ':is(#id:empty,a ~ b,}) { }' parsed: YES
selector ':is(#id:empty,a ~ b,:not() { }' parsed: NO
selector ':is(#id:empty,a ~ b,:is() { }' parsed: NO
selector ':is(#id:empty,a ~ b,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(#id:empty,:-webkit-any(.selector,#tama,#hanayo,#midoriko),) { }' parsed: YES
selector ':is(#id:empty,:-webkit-any(.selector,#tama,#hanayo,#midoriko), ) { }' parsed: YES
selector ':is(#id:empty,:-webkit-any(.selector,#tama,#hanayo,#midoriko),,) { }' parsed: YES
selector ':is(#id:empty,:-webkit-any(.selector,#tama,#hanayo,#midoriko),.123class) { }' parsed: YES
selector ':is(#id:empty,:-webkit-any(.selector,#tama,#hanayo,#midoriko),#123id) { }' parsed: YES
selector ':is(#id:empty,:-webkit-any(.selector,#tama,#hanayo,#midoriko),[]) { }' parsed: YES
selector ':is(#id:empty,:-webkit-any(.selector,#tama,#hanayo,#midoriko),()) { }' parsed: YES
selector ':is(#id:empty,:-webkit-any(.selector,#tama,#hanayo,#midoriko),)) { }' parsed: NO
selector ':is(#id:empty,:-webkit-any(.selector,#tama,#hanayo,#midoriko),{}) { }' parsed: YES
selector ':is(#id:empty,:-webkit-any(.selector,#tama,#hanayo,#midoriko),}) { }' parsed: YES
selector ':is(#id:empty,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not() { }' parsed: NO
selector ':is(#id:empty,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:is() { }' parsed: NO
selector ':is(#id:empty,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(#id:empty,:nth-child(even of a, b, c),) { }' parsed: YES
selector ':is(#id:empty,:nth-child(even of a, b, c), ) { }' parsed: YES
selector ':is(#id:empty,:nth-child(even of a, b, c),,) { }' parsed: YES
selector ':is(#id:empty,:nth-child(even of a, b, c),.123class) { }' parsed: YES
selector ':is(#id:empty,:nth-child(even of a, b, c),#123id) { }' parsed: YES
selector ':is(#id:empty,:nth-child(even of a, b, c),[]) { }' parsed: YES
selector ':is(#id:empty,:nth-child(even of a, b, c),()) { }' parsed: YES
selector ':is(#id:empty,:nth-child(even of a, b, c),)) { }' parsed: NO
selector ':is(#id:empty,:nth-child(even of a, b, c),{}) { }' parsed: YES
selector ':is(#id:empty,:nth-child(even of a, b, c),}) { }' parsed: YES
selector ':is(#id:empty,:nth-child(even of a, b, c),:not() { }' parsed: NO
selector ':is(#id:empty,:nth-child(even of a, b, c),:is() { }' parsed: NO
selector ':is(#id:empty,:nth-child(even of a, b, c),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(#id:empty,:not(:is(cocoa, cappuccino)),) { }' parsed: YES
selector ':is(#id:empty,:not(:is(cocoa, cappuccino)), ) { }' parsed: YES
selector ':is(#id:empty,:not(:is(cocoa, cappuccino)),,) { }' parsed: YES
selector ':is(#id:empty,:not(:is(cocoa, cappuccino)),.123class) { }' parsed: YES
selector ':is(#id:empty,:not(:is(cocoa, cappuccino)),#123id) { }' parsed: YES
selector ':is(#id:empty,:not(:is(cocoa, cappuccino)),[]) { }' parsed: YES
selector ':is(#id:empty,:not(:is(cocoa, cappuccino)),()) { }' parsed: YES
selector ':is(#id:empty,:not(:is(cocoa, cappuccino)),)) { }' parsed: NO
selector ':is(#id:empty,:not(:is(cocoa, cappuccino)),{}) { }' parsed: YES
selector ':is(#id:empty,:not(:is(cocoa, cappuccino)),}) { }' parsed: YES
selector ':is(#id:empty,:not(:is(cocoa, cappuccino)),:not() { }' parsed: NO
selector ':is(#id:empty,:not(:is(cocoa, cappuccino)),:is() { }' parsed: NO
selector ':is(#id:empty,:not(:is(cocoa, cappuccino)),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(a b,a b,) { }' parsed: YES
selector ':is(a b,a b, ) { }' parsed: YES
selector ':is(a b,a b,,) { }' parsed: YES
selector ':is(a b,a b,.123class) { }' parsed: YES
selector ':is(a b,a b,#123id) { }' parsed: YES
selector ':is(a b,a b,[]) { }' parsed: YES
selector ':is(a b,a b,()) { }' parsed: YES
selector ':is(a b,a b,)) { }' parsed: NO
selector ':is(a b,a b,{}) { }' parsed: YES
selector ':is(a b,a b,}) { }' parsed: YES
selector ':is(a b,a b,:not() { }' parsed: NO
selector ':is(a b,a b,:is() { }' parsed: NO
selector ':is(a b,a b,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(a b,a ~ b,) { }' parsed: YES
selector ':is(a b,a ~ b, ) { }' parsed: YES
selector ':is(a b,a ~ b,,) { }' parsed: YES
selector ':is(a b,a ~ b,.123class) { }' parsed: YES
selector ':is(a b,a ~ b,#123id) { }' parsed: YES
selector ':is(a b,a ~ b,[]) { }' parsed: YES
selector ':is(a b,a ~ b,()) { }' parsed: YES
selector ':is(a b,a ~ b,)) { }' parsed: NO
selector ':is(a b,a ~ b,{}) { }' parsed: YES
selector ':is(a b,a ~ b,}) { }' parsed: YES
selector ':is(a b,a ~ b,:not() { }' parsed: NO
selector ':is(a b,a ~ b,:is() { }' parsed: NO
selector ':is(a b,a ~ b,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(a b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),) { }' parsed: YES
selector ':is(a b,:-webkit-any(.selector,#tama,#hanayo,#midoriko), ) { }' parsed: YES
selector ':is(a b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),,) { }' parsed: YES
selector ':is(a b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),.123class) { }' parsed: YES
selector ':is(a b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),#123id) { }' parsed: YES
selector ':is(a b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),[]) { }' parsed: YES
selector ':is(a b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),()) { }' parsed: YES
selector ':is(a b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),)) { }' parsed: NO
selector ':is(a b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),{}) { }' parsed: YES
selector ':is(a b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),}) { }' parsed: YES
selector ':is(a b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not() { }' parsed: NO
selector ':is(a b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:is() { }' parsed: NO
selector ':is(a b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(a b,:nth-child(even of a, b, c),) { }' parsed: YES
selector ':is(a b,:nth-child(even of a, b, c), ) { }' parsed: YES
selector ':is(a b,:nth-child(even of a, b, c),,) { }' parsed: YES
selector ':is(a b,:nth-child(even of a, b, c),.123class) { }' parsed: YES
selector ':is(a b,:nth-child(even of a, b, c),#123id) { }' parsed: YES
selector ':is(a b,:nth-child(even of a, b, c),[]) { }' parsed: YES
selector ':is(a b,:nth-child(even of a, b, c),()) { }' parsed: YES
selector ':is(a b,:nth-child(even of a, b, c),)) { }' parsed: NO
selector ':is(a b,:nth-child(even of a, b, c),{}) { }' parsed: YES
selector ':is(a b,:nth-child(even of a, b, c),}) { }' parsed: YES
selector ':is(a b,:nth-child(even of a, b, c),:not() { }' parsed: NO
selector ':is(a b,:nth-child(even of a, b, c),:is() { }' parsed: NO
selector ':is(a b,:nth-child(even of a, b, c),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(a b,:not(:is(cocoa, cappuccino)),) { }' parsed: YES
selector ':is(a b,:not(:is(cocoa, cappuccino)), ) { }' parsed: YES
selector ':is(a b,:not(:is(cocoa, cappuccino)),,) { }' parsed: YES
selector ':is(a b,:not(:is(cocoa, cappuccino)),.123class) { }' parsed: YES
selector ':is(a b,:not(:is(cocoa, cappuccino)),#123id) { }' parsed: YES
selector ':is(a b,:not(:is(cocoa, cappuccino)),[]) { }' parsed: YES
selector ':is(a b,:not(:is(cocoa, cappuccino)),()) { }' parsed: YES
selector ':is(a b,:not(:is(cocoa, cappuccino)),)) { }' parsed: NO
selector ':is(a b,:not(:is(cocoa, cappuccino)),{}) { }' parsed: YES
selector ':is(a b,:not(:is(cocoa, cappuccino)),}) { }' parsed: YES
selector ':is(a b,:not(:is(cocoa, cappuccino)),:not() { }' parsed: NO
selector ':is(a b,:not(:is(cocoa, cappuccino)),:is() { }' parsed: NO
selector ':is(a b,:not(:is(cocoa, cappuccino)),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(a ~ b,a ~ b,) { }' parsed: YES
selector ':is(a ~ b,a ~ b, ) { }' parsed: YES
selector ':is(a ~ b,a ~ b,,) { }' parsed: YES
selector ':is(a ~ b,a ~ b,.123class) { }' parsed: YES
selector ':is(a ~ b,a ~ b,#123id) { }' parsed: YES
selector ':is(a ~ b,a ~ b,[]) { }' parsed: YES
selector ':is(a ~ b,a ~ b,()) { }' parsed: YES
selector ':is(a ~ b,a ~ b,)) { }' parsed: NO
selector ':is(a ~ b,a ~ b,{}) { }' parsed: YES
selector ':is(a ~ b,a ~ b,}) { }' parsed: YES
selector ':is(a ~ b,a ~ b,:not() { }' parsed: NO
selector ':is(a ~ b,a ~ b,:is() { }' parsed: NO
selector ':is(a ~ b,a ~ b,:nth-child(2n+1 of) { }' parsed: NO
selector ':is(a ~ b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),) { }' parsed: YES
selector ':is(a ~ b,:-webkit-any(.selector,#tama,#hanayo,#midoriko), ) { }' parsed: YES
selector ':is(a ~ b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),,) { }' parsed: YES
selector ':is(a ~ b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),.123class) { }' parsed: YES
selector ':is(a ~ b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),#123id) { }' parsed: YES
selector ':is(a ~ b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),[]) { }' parsed: YES
selector ':is(a ~ b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),()) { }' parsed: YES
selector ':is(a ~ b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),)) { }' parsed: NO
selector ':is(a ~ b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),{}) { }' parsed: YES
selector ':is(a ~ b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),}) { }' parsed: YES
selector ':is(a ~ b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not() { }' parsed: NO
selector ':is(a ~ b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:is() { }' parsed: NO
selector ':is(a ~ b,:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(a ~ b,:nth-child(even of a, b, c),) { }' parsed: YES
selector ':is(a ~ b,:nth-child(even of a, b, c), ) { }' parsed: YES
selector ':is(a ~ b,:nth-child(even of a, b, c),,) { }' parsed: YES
selector ':is(a ~ b,:nth-child(even of a, b, c),.123class) { }' parsed: YES
selector ':is(a ~ b,:nth-child(even of a, b, c),#123id) { }' parsed: YES
selector ':is(a ~ b,:nth-child(even of a, b, c),[]) { }' parsed: YES
selector ':is(a ~ b,:nth-child(even of a, b, c),()) { }' parsed: YES
selector ':is(a ~ b,:nth-child(even of a, b, c),)) { }' parsed: NO
selector ':is(a ~ b,:nth-child(even of a, b, c),{}) { }' parsed: YES
selector ':is(a ~ b,:nth-child(even of a, b, c),}) { }' parsed: YES
selector ':is(a ~ b,:nth-child(even of a, b, c),:not() { }' parsed: NO
selector ':is(a ~ b,:nth-child(even of a, b, c),:is() { }' parsed: NO
selector ':is(a ~ b,:nth-child(even of a, b, c),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(a ~ b,:not(:is(cocoa, cappuccino)),) { }' parsed: YES
selector ':is(a ~ b,:not(:is(cocoa, cappuccino)), ) { }' parsed: YES
selector ':is(a ~ b,:not(:is(cocoa, cappuccino)),,) { }' parsed: YES
selector ':is(a ~ b,:not(:is(cocoa, cappuccino)),.123class) { }' parsed: YES
selector ':is(a ~ b,:not(:is(cocoa, cappuccino)),#123id) { }' parsed: YES
selector ':is(a ~ b,:not(:is(cocoa, cappuccino)),[]) { }' parsed: YES
selector ':is(a ~ b,:not(:is(cocoa, cappuccino)),()) { }' parsed: YES
selector ':is(a ~ b,:not(:is(cocoa, cappuccino)),)) { }' parsed: NO
selector ':is(a ~ b,:not(:is(cocoa, cappuccino)),{}) { }' parsed: YES
selector ':is(a ~ b,:not(:is(cocoa, cappuccino)),}) { }' parsed: YES
selector ':is(a ~ b,:not(:is(cocoa, cappuccino)),:not() { }' parsed: NO
selector ':is(a ~ b,:not(:is(cocoa, cappuccino)),:is() { }' parsed: NO
selector ':is(a ~ b,:not(:is(cocoa, cappuccino)),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:-webkit-any(.selector,#tama,#hanayo,#midoriko),) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:-webkit-any(.selector,#tama,#hanayo,#midoriko), ) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:-webkit-any(.selector,#tama,#hanayo,#midoriko),,) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:-webkit-any(.selector,#tama,#hanayo,#midoriko),.123class) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:-webkit-any(.selector,#tama,#hanayo,#midoriko),#123id) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:-webkit-any(.selector,#tama,#hanayo,#midoriko),[]) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:-webkit-any(.selector,#tama,#hanayo,#midoriko),()) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:-webkit-any(.selector,#tama,#hanayo,#midoriko),)) { }' parsed: NO
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:-webkit-any(.selector,#tama,#hanayo,#midoriko),{}) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:-webkit-any(.selector,#tama,#hanayo,#midoriko),}) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not() { }' parsed: NO
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:-webkit-any(.selector,#tama,#hanayo,#midoriko),:is() { }' parsed: NO
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(even of a, b, c),) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(even of a, b, c), ) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(even of a, b, c),,) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(even of a, b, c),.123class) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(even of a, b, c),#123id) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(even of a, b, c),[]) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(even of a, b, c),()) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(even of a, b, c),)) { }' parsed: NO
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(even of a, b, c),{}) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(even of a, b, c),}) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(even of a, b, c),:not() { }' parsed: NO
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(even of a, b, c),:is() { }' parsed: NO
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:nth-child(even of a, b, c),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not(:is(cocoa, cappuccino)),) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not(:is(cocoa, cappuccino)), ) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not(:is(cocoa, cappuccino)),,) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not(:is(cocoa, cappuccino)),.123class) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not(:is(cocoa, cappuccino)),#123id) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not(:is(cocoa, cappuccino)),[]) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not(:is(cocoa, cappuccino)),()) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not(:is(cocoa, cappuccino)),)) { }' parsed: NO
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not(:is(cocoa, cappuccino)),{}) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not(:is(cocoa, cappuccino)),}) { }' parsed: YES
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not(:is(cocoa, cappuccino)),:not() { }' parsed: NO
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not(:is(cocoa, cappuccino)),:is() { }' parsed: NO
selector ':is(:-webkit-any(.selector,#tama,#hanayo,#midoriko),:not(:is(cocoa, cappuccino)),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(:nth-child(even of a, b, c),:nth-child(even of a, b, c),) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:nth-child(even of a, b, c), ) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:nth-child(even of a, b, c),,) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:nth-child(even of a, b, c),.123class) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:nth-child(even of a, b, c),#123id) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:nth-child(even of a, b, c),[]) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:nth-child(even of a, b, c),()) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:nth-child(even of a, b, c),)) { }' parsed: NO
selector ':is(:nth-child(even of a, b, c),:nth-child(even of a, b, c),{}) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:nth-child(even of a, b, c),}) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:nth-child(even of a, b, c),:not() { }' parsed: NO
selector ':is(:nth-child(even of a, b, c),:nth-child(even of a, b, c),:is() { }' parsed: NO
selector ':is(:nth-child(even of a, b, c),:nth-child(even of a, b, c),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(:nth-child(even of a, b, c),:not(:is(cocoa, cappuccino)),) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:not(:is(cocoa, cappuccino)), ) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:not(:is(cocoa, cappuccino)),,) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:not(:is(cocoa, cappuccino)),.123class) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:not(:is(cocoa, cappuccino)),#123id) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:not(:is(cocoa, cappuccino)),[]) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:not(:is(cocoa, cappuccino)),()) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:not(:is(cocoa, cappuccino)),)) { }' parsed: NO
selector ':is(:nth-child(even of a, b, c),:not(:is(cocoa, cappuccino)),{}) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:not(:is(cocoa, cappuccino)),}) { }' parsed: YES
selector ':is(:nth-child(even of a, b, c),:not(:is(cocoa, cappuccino)),:not() { }' parsed: NO
selector ':is(:nth-child(even of a, b, c),:not(:is(cocoa, cappuccino)),:is() { }' parsed: NO
selector ':is(:nth-child(even of a, b, c),:not(:is(cocoa, cappuccino)),:nth-child(2n+1 of) { }' parsed: NO
selector ':is(:not(:is(cocoa, cappuccino)),:not(:is(cocoa, cappuccino)),) { }' parsed: YES
selector ':is(:not(:is(cocoa, cappuccino)),:not(:is(cocoa, cappuccino)), ) { }' parsed: YES
selector ':is(:not(:is(cocoa, cappuccino)),:not(:is(cocoa, cappuccino)),,) { }' parsed: YES
selector ':is(:not(:is(cocoa, cappuccino)),:not(:is(cocoa, cappuccino)),.123class) { }' parsed: YES
selector ':is(:not(:is(cocoa, cappuccino)),:not(:is(cocoa, cappuccino)),#123id) { }' parsed: YES
selector ':is(:not(:is(cocoa, cappuccino)),:not(:is(cocoa, cappuccino)),[]) { }' parsed: YES
selector ':is(:not(:is(cocoa, cappuccino)),:not(:is(cocoa, cappuccino)),()) { }' parsed: YES
selector ':is(:not(:is(cocoa, cappuccino)),:not(:is(cocoa, cappuccino)),)) { }' parsed: NO
selector ':is(:not(:is(cocoa, cappuccino)),:not(:is(cocoa, cappuccino)),{}) { }' parsed: YES
selector ':is(:not(:is(cocoa, cappuccino)),:not(:is(cocoa, cappuccino)),}) { }' parsed: YES
selector ':is(:not(:is(cocoa, cappuccino)),:not(:is(cocoa, cappuccino)),:not() { }' parsed: NO
selector ':is(:not(:is(cocoa, cappuccino)),:not(:is(cocoa, cappuccino)),:is() { }' parsed: NO
selector ':is(:not(:is(cocoa, cappuccino)),:not(:is(cocoa, cappuccino)),:nth-child(2n+1 of) { }' parsed: NO
[CSS Selectors 4] Add support for `:is()` with the same logic for the existing `:matches()` https://bugs.webkit.org/show_bug.cgi?id=209707 Reviewed by Antti Koivisto. LayoutTests/imported/w3c: * web-platform-tests/css/selectors/invalidation/is-expected.txt: Source/WebCore: Add `PseudoClassType::PseudoClassIs` and use it where `PseudoClassTyle::PseudoClassMatches` is already used now. Tests: fast/css/is-specificity-1.html fast/css/is-specificity-2.html fast/css/is-specificity-3.html fast/css/is-specificity-4.html fast/css/is-specificity-5.html fast/css/is-specificity-6.html fast/css/is-specificity-7.html fast/css/is-specificity-8.html fast/css/is-specificity-9.html fast/css/is-specificity-10.html fast/css/parsing-css-is-1.html fast/css/parsing-css-is-2.html fast/css/parsing-css-is-3.html fast/css/parsing-css-is-4.html fast/css/parsing-css-is-5.html fast/css/parsing-css-is-6.html fast/css/parsing-css-is-7.html fast/css/parsing-css-is-8.html fast/selectors/is-backtracking.html fast/selectors/is-complex.html fast/selectors/is-selector-list.html fast/selectors/is-selector-list-ending-with-never-matching-selectors.html fast/selectors/is-with-pseudo-element.html fast/selectors/pseudo-element-inside-is.html fast/selectors/querySelector-is.html imported/w3c/web-platform-tests/css/selectors/invalidation/is.html imported/w3c/web-platform-tests/css/selectors/is-nested.html imported/w3c/web-platform-tests/css/selectors/is-specificity.html * css/CSSSelector.h: * css/CSSSelector.cpp: (WebCore::simpleSelectorSpecificityInternal): (WebCore::simpleSelectorFunctionalPseudoClassStaticSpecificity): (WebCore::CSSSelector::selectorText const): * css/SelectorChecker.cpp: (WebCore::SelectorChecker::matchRecursively const): * css/SelectorPseudoClassAndCompatibilityElementMap.in: * css/parser/CSSSelectorParser.cpp: (WebCore::isOnlyPseudoClassFunction): (WebCore::CSSSelectorParser::consumePseudo): * cssjit/SelectorCompiler.cpp: (WebCore::SelectorCompiler::addPseudoClassType): (WebCore::SelectorChecker::checkOne const): * inspector/InspectorStyleSheet.cpp: (WebCore::hasDynamicSpecificity): * features.json: LayoutTests: * fast/css/css-selector-text.html: * fast/css/css-selector-text-expected.txt: * fast/css/css-set-selector-text.html: * fast/css/css-set-selector-text-expected.txt: * fast/css/is-specificity-1.html: Copied from fast/css/matches-specificity-1.html. * fast/css/is-specificity-1-expected.html: Copied from fast/css/matches-specificity-1-expected.html. * fast/css/is-specificity-2.html: Copied from fast/css/matches-specificity-2.html. * fast/css/is-specificity-2-expected.html: Copied from fast/css/matches-specificity-2-expected.html. * fast/css/is-specificity-3.html: Copied from fast/css/matches-specificity-3.html. * fast/css/is-specificity-3-expected.html: Copied from fast/css/matches-specificity-3-expected.html. * fast/css/is-specificity-4.html: Copied from fast/css/matches-specificity-4.html. * fast/css/is-specificity-4-expected.html: Copied from fast/css/matches-specificity-4-expected.html. * fast/css/is-specificity-5.html: Copied from fast/css/matches-specificity-5.html. * fast/css/is-specificity-5-expected.html: Copied from fast/css/matches-specificity-5-expected.html. * fast/css/is-specificity-6.html: Copied from fast/css/matches-specificity-6.html. * fast/css/is-specificity-6-expected.html: Copied from fast/css/matches-specificity-6-expected.html. * fast/css/is-specificity-7.html: Copied from fast/css/matches-specificity-7.html. * fast/css/is-specificity-7-expected.html: Copied from fast/css/matches-specificity-7-expected.html. * fast/css/is-specificity-8.html: Copied from fast/css/matches-specificity-8.html. * fast/css/is-specificity-8-expected.html: Copied from fast/css/matches-specificity-8-expected.html. * fast/css/is-specificity-9.html: Copied from fast/css/matches-specificity-9.html. * fast/css/is-specificity-9-expected.html: Copied from fast/css/matches-specificity-9-expected.html. * fast/css/is-specificity-10.html: Copied from fast/css/matches-specificity-10.html. * fast/css/is-specificity-10-expected.html: Copied from fast/css/matches-specificity-10-expected.html. * fast/css/parsing-css-attribute-case-insensitive-value-1.html: * fast/css/parsing-css-attribute-case-insensitive-value-1-expected.txt: * fast/css/parsing-css-attribute-case-insensitive-value-4.html: * fast/css/parsing-css-attribute-case-insensitive-value-4-expected.txt: * fast/css/parsing-css-is-1.html: Coped from fast/css/parsing-css-matches-1.html. * fast/css/parsing-css-is-1-expected.txt: Coped from fast/css/parsing-css-matches-1-expected.txt. * fast/css/parsing-css-is-2.html: Coped from fast/css/parsing-css-matches-2.html. * fast/css/parsing-css-is-2-expected.txt: Coped from fast/css/parsing-css-matches-2-expected.txt. * fast/css/parsing-css-is-3.html: Coped from fast/css/parsing-css-matches-3.html. * fast/css/parsing-css-is-3-expected.txt: Coped from fast/css/parsing-css-matches-3-expected.txt. * fast/css/parsing-css-is-4.html: Coped from fast/css/parsing-css-matches-4.html. * fast/css/parsing-css-is-4-expected.txt: Coped from fast/css/parsing-css-matches-4-expected.txt. * fast/css/parsing-css-is-5.html: Coped from fast/css/parsing-css-matches-5.html. * fast/css/parsing-css-is-5-expected.txt: Coped from fast/css/parsing-css-matches-5-expected.txt. * fast/css/parsing-css-is-6.html: Coped from fast/css/parsing-css-matches-6.html. * fast/css/parsing-css-is-6-expected.txt: Coped from fast/css/parsing-css-matches-6-expected.txt. * fast/css/parsing-css-is-7.html: Coped from fast/css/parsing-css-matches-7.html. * fast/css/parsing-css-is-7-expected.txt: Coped from fast/css/parsing-css-matches-7-expected.txt. * fast/css/parsing-css-is-8.html: Coped from fast/css/parsing-css-matches-8.html. * fast/css/parsing-css-is-8-expected.txt: Coped from fast/css/parsing-css-matches-8-expected.txt. * fast/css/parsing-css-not-1.html: * fast/css/parsing-css-not-1-expected.txt: * fast/css/parsing-css-not-2.html: * fast/css/parsing-css-not-2-expected.txt: * fast/css/parsing-css-not-5.html: * fast/css/parsing-css-not-5-expected.txt: * fast/css/parsing-css-not-6.html: * fast/css/parsing-css-not-6-expected.txt: * fast/css/parsing-css-not-7.html: * fast/css/parsing-css-not-7-expected.txt: * fast/css/parsing-css-not-8.html: * fast/css/parsing-css-not-8-expected.txt: * fast/css/parsing-css-not-9.html: * fast/css/parsing-css-not-9-expected.txt: * fast/css/parsing-css-nth-child-of-4.html: * fast/css/parsing-css-nth-child-of-4-expected.txt: * fast/css/parsing-css-nth-last-child-of-4.html: * fast/css/parsing-css-nth-last-child-of-4-expected.txt: * fast/selectors/case-insensitive-attribute-register-requirement-1.html: * fast/selectors/case-insensitive-attribute-register-requirement-1-expected.txt: * fast/selectors/element-matches-attribute-ascii-case-insensitive-html-expected.txt: * fast/selectors/element-matches-attribute-ascii-case-insensitive-html.html: * fast/selectors/is-backtracking.html: Copied from fast/selectors/matches-backtracking.html. * fast/selectors/is-backtracking-expected.txt: Copied from fast/selectors/matches-backtracking-expected.txt. * fast/selectors/is-complex.html: Copied from fast/selectors/matches-complex.html. * fast/selectors/is-complex-expected.txt: Copied from fast/selectors/matches-complex-expected.txt. * fast/selectors/is-selector-list.html: Copied from fast/selectors/matches-selector-list.html. * fast/selectors/is-selector-list-expected.txt: Copied from fast/selectors/matches-selector-list-expected.txt. * fast/selectors/is-selector-list-ending-with-never-matching-selectors.html: Copied from fast/selectors/matches-selector-list-ending-with-never-matching-selectors.html. * fast/selectors/is-selector-list-ending-with-never-matching-selectors-expected.txt: Copied from fast/selectors/matches-selector-list-ending-with-never-matching-selectors-expected.txt. * fast/selectors/is-with-pseudo-element.html: Copied from fast/selectors/matches-with-pseudo-element.html. * fast/selectors/is-with-pseudo-element-expected.html: Copied from fast/selectors/matches-with-pseudo-element-expected.html. * fast/selectors/pseudo-element-inside-is.html: Copied from fast/selectors/pseudo-element-inside-matches.html. * fast/selectors/pseudo-element-inside-is-expected.html: Copied from fast/selectors/pseudo-element-inside-matches-expected.html. * fast/selectors/querySelector-attribute-ascii-case-insensitive-html.html: * fast/selectors/querySelector-attribute-ascii-case-insensitive-html-expected.txt: * fast/selectors/querySelector-is.html: Copied from fast/selectors/querySelector-matches.html. * fast/selectors/querySelector-is-expected.txt: Copied from fast/selectors/querySelector-matches-expected.txt. * fast/selectors/querySelector-tagname-case-sensitivity-svg-in-html.html: * fast/selectors/querySelector-tagname-case-sensitivity-svg-in-html-expected.txt: * fast/selectors/querySelector-tagname-case-sensitivity-svg-in-xhtml.xhtml: * fast/selectors/querySelector-tagname-case-sensitivity-svg-in-xhtml-expected.txt: * fast/selectors/querySelector-tagname-case-sensitivity-xml-in-html.html: * fast/selectors/querySelector-tagname-case-sensitivity-xml-in-html-expected.txt: * fast/selectors/querySelector-tagname-case-sensitivity-xml-in-xhtml.xhtml: * fast/selectors/querySelector-tagname-case-sensitivity-xml-in-xhtml-expected.txt: * inspector/css/selector-dynamic-specificity.html: * inspector/css/selector-dynamic-specificity-expected.txt: * TestExpectations: * platform/wincairo/TestExpectations: * platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/222706@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259261 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-03-31 00:52:56 +00:00
PASS successfullyParsed is true
TEST COMPLETE