From 1b7b4f0cb4b331d5ad861e3721c2fcd14322b2e4 Mon Sep 17 00:00:00 2001 From: Alexander Akait <4567934+alexander-akait@users.noreply.github.com> Date: Mon, 13 Jun 2022 23:27:30 +0300 Subject: [PATCH] test(css/parser): Improve tests (#4963) --- crates/swc_css_parser/tests/fixture.rs | 326 +- .../line-comment/css-in-js/1/span.rust-debug | 135 + .../line-comment/css-in-js/10/span.rust-debug | 84 + .../line-comment/css-in-js/2/span.rust-debug | 165 + .../line-comment/css-in-js/3/span.rust-debug | 181 + .../line-comment/css-in-js/4/span.rust-debug | 211 + .../line-comment/css-in-js/5/span.rust-debug | 183 + .../line-comment/css-in-js/6/span.rust-debug | 215 + .../line-comment/css-in-js/7/span.rust-debug | 30 + .../line-comment/css-in-js/8/span.rust-debug | 30 + .../line-comment/css-in-js/9/span.rust-debug | 54 + .../at-rule/extra-semi/span.rust-debug | 131 + .../at-rule/font-face/span.rust-debug | 399 + .../at-rule/import/empty/span.rust-debug | 42 + .../at-rule/import/indent/span.rust-debug | 54 + .../at-rule/import/no-semi/span.rust-debug | 126 + .../at-rule/import/no-url/span.rust-debug | 120 + .../keyframes/custom-ident-1/span.rust-debug | 72 + .../keyframes/custom-ident-2/span.rust-debug | 72 + .../keyframes/custom-ident-3/span.rust-debug | 72 + .../keyframes/custom-ident-4/span.rust-debug | 72 + .../keyframes/custom-ident/span.rust-debug | 72 + .../keyframes/empty-name/span.rust-debug | 48 + .../span.rust-debug | 339 + .../keyframe-keyword/span.rust-debug | 217 + .../keyframes/keyframe-number/span.rust-debug | 136 + .../at-rule/layer/block/span.rust-debug | 172 + .../at-rule/layer/empty/span.rust-debug | 42 + .../layer/string-name-block/span.rust-debug | 558 + .../string-name-statement/span.rust-debug | 54 + .../at-rule/media/condition-1/span.rust-debug | 102 + .../media/condition-and-or/span.rust-debug | 120 + .../at-rule/media/condition/span.rust-debug | 102 + .../media/feature-name-1/span.rust-debug | 108 + .../media/feature-name-2/span.rust-debug | 72 + .../media/feature-name/span.rust-debug | 108 + .../media/feature-range-1/span.rust-debug | 132 + .../media/feature-range-2/span.rust-debug | 168 + .../media/feature-range-3/span.rust-debug | 216 + .../media/feature-range-4/span.rust-debug | 180 + .../media/feature-range-5/span.rust-debug | 192 + .../media/feature-range-6/span.rust-debug | 192 + .../media/feature-range/span.rust-debug | 120 + .../feature-value-missing/span.rust-debug | 144 + .../at-rule/media/feature/span.rust-debug | 84 + .../media/invalid-nesting/span.rust-debug | 172 + .../at-rule/media/ratio/span.rust-debug | 120 + .../media/wrong-stylesheet/span.rust-debug | 230 + .../recovery/at-rule/no-semi/span.rust-debug | 168 + .../page/invalid-nesting/span.rust-debug | 472 + .../page/invalid-pseudo/span.rust-debug | 118 + .../at-rule/page/no-space/span.rust-debug | 188 + .../at-rule/page/without-page/span.rust-debug | 128 + .../supports/no-parens/span.rust-debug | 108 + .../supports/wrong-or-and/span.rust-debug | 126 + .../recovery/at-rule/unknown/span.rust-debug | 30 + .../double-quotes/span.rust-debug | 158 + .../invalid-escape/span.rust-debug | 118 + .../left-parenthesis/span.rust-debug | 158 + .../single-quotes/span.rust-debug | 158 + .../whitespace-in-middle/span.rust-debug | 112 + .../bad-url-token/whitespace/span.rust-debug | 164 + .../recovery/cdo-and-cdc/span.rust-debug | 216 + .../comments/bad-comment-1/span.rust-debug | 42 + .../comments/bad-comment-2/span.rust-debug | 6 + .../comments/bad-comment-3/span.rust-debug | 6 + .../comments/declaration/span.rust-debug | 146 + .../declaration/basic/span.rust-debug | 444 + .../declaration/important/span.rust-debug | 136 + .../delim-token/ampersand/span.rust-debug | 112 + .../delim-token/asterisk/span.rust-debug | 112 + .../delim-token/at-sign/span.rust-debug | 124 + .../recovery/delim-token/bang/span.rust-debug | 124 + .../recovery/delim-token/bar/span.rust-debug | 112 + .../delim-token/caret/span.rust-debug | 112 + .../delim-token/dollar/span.rust-debug | 112 + .../delim-token/equals/span.rust-debug | 112 + .../delim-token/greater-than/span.rust-debug | 112 + .../recovery/delim-token/hash/span.rust-debug | 124 + .../delim-token/less-than/span.rust-debug | 112 + .../delim-token/minus/span.rust-debug | 294 + .../delim-token/percent/span.rust-debug | 112 + .../recovery/delim-token/plus/span.rust-debug | 294 + .../delim-token/question-mark/span.rust-debug | 112 + .../recovery/delim-token/star/span.rust-debug | 112 + .../delim-token/tilde/span.rust-debug | 112 + .../recovery/function-token/span.rust-debug | 142 + .../function/bad-comment-2/span.rust-debug | 140 + .../function/bad-comment/span.rust-debug | 140 + .../recovery/function/base/span.rust-debug | 754 + .../function/calc/division/span.rust-debug | 220 + .../function/calc/space/span.rust-debug | 232 + .../recovery/function/rgb/span.rust-debug | 1244 ++ .../function/unclosed-2/span.rust-debug | 236 + .../function/unclosed/span.rust-debug | 176 + .../recovery/function/var/span.rust-debug | 402 + .../tests/recovery/hacks/span.rust-debug | 15218 ++++++++++++++++ .../tests/recovery/ie-progid/span.rust-debug | 608 + .../tests/recovery/number/span.rust-debug | 274 + .../qualified-rule/basic/span.rust-debug | 128 + .../qualified-rule/broken/span.rust-debug | 114 + .../double-slash-comment/span.rust-debug | 123 + .../qualified-rule/only-block/span.rust-debug | 117 + .../invalid-matcher-1/span.rust-debug | 60 + .../invalid-matcher-2/span.rust-debug | 72 + .../invalid-matcher-3/span.rust-debug | 160 + .../invalid-matcher-4/span.rust-debug | 124 + .../attribute/invalid-matcher/span.rust-debug | 72 + .../invalid-modifier/span.rust-debug | 78 + .../attribute/unclosed/span.rust-debug | 70 + .../selector/combinator/only/span.rust-debug | 46 + .../selector/combinator/two/span.rust-debug | 66 + .../selector/id/invalid/span.rust-debug | 46 + .../recovery/selector/list/span.rust-debug | 42 + .../pseudo-class/an-plus-b/span.rust-debug | 72 + .../invalid-function/span.rust-debug | 70 + .../invalid-ident/span.rust-debug | 58 + .../pseudo-class/invalid/span.rust-debug | 162 + .../pseudo-element/after/span.rust-debug | 64 + .../pseudo-element/between/span.rust-debug | 64 + .../pseudo-element/invalid/span.rust-debug | 60 + .../unclosed-in-function/span.rust-debug | 209 + .../basic/span.rust-debug | 1396 ++ .../invalid-nested-2/span.rust-debug | 559 + .../invalid-nested/span.rust-debug | 559 + .../recovery/styled-jsx/1/span.rust-debug | 1047 ++ .../recovery/styled-jsx/2/span.rust-debug | 196 + .../recovery/unicode-range/span.rust-debug | 212 + .../value/at-keyword/1/span.rust-debug | 164 +- .../value/at-keyword/2/span.rust-debug | 168 +- .../value/at-keyword/3/span.rust-debug | 168 +- .../value/at-keyword/4/span.rust-debug | 168 +- .../value/at-keyword/5/span.rust-debug | 168 +- .../value/at-keyword/6/span.rust-debug | 168 +- .../value/at-keyword/7/span.rust-debug | 168 +- .../exclamation/span.rust-debug | 709 + .../recovery/value/hash/eof/span.rust-debug | 108 + .../recovery/value/number/dot/span.rust-debug | 180 +- .../recovery/value/number/eof/span.rust-debug | 108 + .../value/number/minus-dot/span.rust-debug | 180 +- .../value/number/plus-dot/span.rust-debug | 180 +- .../value/percentage/dot/span.rust-debug | 196 +- .../value/percentage/minus/span.rust-debug | 196 +- .../value/percentage/plus/span.rust-debug | 196 +- .../recovery/value/quotes/span.rust-debug | 158 + .../string/eof-double-quotes/span.rust-debug | 108 + .../string/eof-single-quotes/span.rust-debug | 108 + .../string/escaped/broken-1/span.rust-debug | 112 + .../string/escaped/broken/span.rust-debug | 108 + .../value/string/escaped/eof/span.rust-debug | 108 + .../value/string/newline/span.rust-debug | 108 + .../recovery/value/url/basic/span.rust-debug | 850 + .../value/url/eof-whitespaces/span.rust-debug | 126 + .../recovery/value/url/eof/span.rust-debug | 126 + .../value/url/parenthesis/span.rust-debug | 114 + .../tests/recovery/vercel/001/span.rust-debug | 806 + .../tests/recovery/vercel/002/span.rust-debug | 988 + .../tests/recovery/vercel/003/span.rust-debug | 574 + .../tests/recovery/vercel/004/span.rust-debug | 347 + .../tests/recovery/vercel/005/span.rust-debug | 268 + .../recovery/whitespaces/span.rust-debug | 224 + 161 files changed, 45645 insertions(+), 1125 deletions(-) create mode 100644 crates/swc_css_parser/tests/line-comment/css-in-js/1/span.rust-debug create mode 100644 crates/swc_css_parser/tests/line-comment/css-in-js/10/span.rust-debug create mode 100644 crates/swc_css_parser/tests/line-comment/css-in-js/2/span.rust-debug create mode 100644 crates/swc_css_parser/tests/line-comment/css-in-js/3/span.rust-debug create mode 100644 crates/swc_css_parser/tests/line-comment/css-in-js/4/span.rust-debug create mode 100644 crates/swc_css_parser/tests/line-comment/css-in-js/5/span.rust-debug create mode 100644 crates/swc_css_parser/tests/line-comment/css-in-js/6/span.rust-debug create mode 100644 crates/swc_css_parser/tests/line-comment/css-in-js/7/span.rust-debug create mode 100644 crates/swc_css_parser/tests/line-comment/css-in-js/8/span.rust-debug create mode 100644 crates/swc_css_parser/tests/line-comment/css-in-js/9/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/extra-semi/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/font-face/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/import/empty/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/import/indent/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/import/no-semi/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/import/no-url/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident-1/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident-2/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident-3/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident-4/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/keyframes/empty-name/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/keyframes/keyframe-keyword/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/keyframes/keyframe-number/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/layer/block/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/layer/empty/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/layer/string-name-block/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/layer/string-name-statement/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/condition-1/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/condition-and-or/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/condition/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/feature-name-1/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/feature-name-2/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/feature-name/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-1/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-2/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-3/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-4/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-5/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-6/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/feature-range/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/feature-value-missing/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/feature/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/invalid-nesting/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/ratio/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/media/wrong-stylesheet/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/no-semi/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/page/invalid-nesting/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/page/invalid-pseudo/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/page/no-space/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/page/without-page/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/supports/no-parens/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/supports/wrong-or-and/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/at-rule/unknown/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/bad-url-token/double-quotes/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/bad-url-token/invalid-escape/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/bad-url-token/left-parenthesis/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/bad-url-token/single-quotes/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/bad-url-token/whitespace-in-middle/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/bad-url-token/whitespace/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/cdo-and-cdc/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/comments/bad-comment-1/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/comments/bad-comment-2/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/comments/bad-comment-3/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/comments/declaration/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/declaration/basic/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/declaration/important/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/delim-token/ampersand/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/delim-token/asterisk/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/delim-token/at-sign/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/delim-token/bang/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/delim-token/bar/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/delim-token/caret/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/delim-token/dollar/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/delim-token/equals/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/delim-token/greater-than/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/delim-token/hash/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/delim-token/less-than/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/delim-token/minus/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/delim-token/percent/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/delim-token/plus/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/delim-token/question-mark/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/delim-token/star/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/delim-token/tilde/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/function-token/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/function/bad-comment-2/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/function/bad-comment/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/function/base/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/function/calc/division/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/function/calc/space/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/function/rgb/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/function/unclosed-2/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/function/unclosed/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/function/var/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/hacks/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/ie-progid/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/number/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/qualified-rule/basic/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/qualified-rule/broken/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/qualified-rule/double-slash-comment/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/qualified-rule/only-block/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher-1/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher-2/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher-3/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher-4/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/attribute/invalid-modifier/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/attribute/unclosed/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/combinator/only/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/combinator/two/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/id/invalid/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/list/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/pseudo-class/an-plus-b/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/pseudo-class/invalid-function/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/pseudo-class/invalid-ident/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/pseudo-class/invalid/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/pseudo-element/after/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/pseudo-element/between/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/selector/pseudo-element/invalid/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/simple-block/unclosed-in-function/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/style-blocks-contents/basic/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/style-blocks-contents/invalid-nested-2/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/style-blocks-contents/invalid-nested/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/styled-jsx/1/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/styled-jsx/2/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/unicode-range/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/value/custom-properties/exclamation/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/value/hash/eof/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/value/number/eof/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/value/quotes/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/value/string/eof-double-quotes/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/value/string/eof-single-quotes/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/value/string/escaped/broken-1/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/value/string/escaped/broken/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/value/string/escaped/eof/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/value/string/newline/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/value/url/basic/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/value/url/eof-whitespaces/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/value/url/eof/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/value/url/parenthesis/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/vercel/001/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/vercel/002/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/vercel/003/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/vercel/004/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/vercel/005/span.rust-debug create mode 100644 crates/swc_css_parser/tests/recovery/whitespaces/span.rust-debug diff --git a/crates/swc_css_parser/tests/fixture.rs b/crates/swc_css_parser/tests/fixture.rs index 3bdaeb9904b..bc31e420c92 100644 --- a/crates/swc_css_parser/tests/fixture.rs +++ b/crates/swc_css_parser/tests/fixture.rs @@ -7,20 +7,58 @@ use swc_css_ast::*; use swc_css_parser::{ lexer::Lexer, parse_tokens, - parser::{input::ParserInput, Parser, ParserConfig}, + parser::{input::ParserInput, PResult, Parser, ParserConfig}, }; use swc_css_visit::{Visit, VisitWith}; use testing::NormalizedOutput; -pub struct Invalid { - pub span: Span, -} +fn stylesheet_test(input: PathBuf, config: ParserConfig) { + let ref_json_path = input.parent().unwrap().join("output.json"); -#[testing::fixture("tests/fixture/**/input.css")] -fn tokens_input(input: PathBuf) { testing::run_test2(false, |cm, handler| { let fm = cm.load_file(&input).unwrap(); + let lexer = Lexer::new(SourceFileInput::from(&*fm), config); + let mut parser = Parser::new(lexer, config); + let stylesheet = parser.parse_all(); + let errors = parser.take_errors(); + for err in &errors { + err.to_diagnostics(&handler).emit(); + } + + if !errors.is_empty() { + return Err(()); + } + + match stylesheet { + Ok(stylesheet) => { + let actual_json = serde_json::to_string_pretty(&stylesheet) + .map(NormalizedOutput::from) + .expect("failed to serialize stylesheet"); + + actual_json.clone().compare_to_file(&ref_json_path).unwrap(); + + Ok(()) + } + Err(err) => { + let mut d = err.to_diagnostics(&handler); + + d.note(&format!("current token = {}", parser.dump_cur())); + d.emit(); + + Err(()) + } + } + }) + .unwrap(); +} + +fn stylesheet_test_tokens(input: PathBuf, config: ParserConfig) { + let ref_json_path = input.parent().unwrap().join("output.json"); + + testing::run_test2(false, |cm, handler| { + let fm = cm.load_file(&input).unwrap(); + let mut errors = vec![]; let tokens = { let mut lexer = Lexer::new(SourceFileInput::from(&*fm), Default::default()); let mut tokens = vec![]; @@ -29,45 +67,24 @@ fn tokens_input(input: PathBuf) { tokens.push(token_and_span); } + errors.extend(lexer.take_errors()); + Tokens { span: Span::new(fm.start_pos, fm.end_pos, Default::default()), tokens, } }; - let mut errors = vec![]; - let _ss: Stylesheet = parse_tokens( - &tokens, - ParserConfig { - ..Default::default() - }, - &mut errors, - ) - .expect("failed to parse tokens"); + let stylesheet: PResult = parse_tokens(&tokens, config, &mut errors); - for err in errors { + for err in &errors { err.to_diagnostics(&handler).emit(); } - if handler.has_errors() { + if !errors.is_empty() { return Err(()); } - Ok(()) - }) - .unwrap(); -} - -fn test_pass(input: PathBuf, config: ParserConfig) { - testing::run_test2(false, |cm, handler| { - let ref_json_path = input.parent().unwrap().join("output.json"); - - let fm = cm.load_file(&input).unwrap(); - let lexer = Lexer::new(SourceFileInput::from(&*fm), config); - let mut parser = Parser::new(lexer, config); - - let stylesheet = parser.parse_all(); - match stylesheet { Ok(stylesheet) => { let actual_json = serde_json::to_string_pretty(&stylesheet) @@ -76,46 +93,10 @@ fn test_pass(input: PathBuf, config: ParserConfig) { actual_json.clone().compare_to_file(&ref_json_path).unwrap(); - if !config.allow_wrong_line_comments { - let mut errors = vec![]; - - let mut lexer = Lexer::new(SourceFileInput::from(&*fm), Default::default()); - let mut tokens = Tokens { - span: Span::new(fm.start_pos, fm.end_pos, Default::default()), - tokens: vec![], - }; - - for token_and_span in lexer.by_ref() { - tokens.tokens.push(token_and_span); - } - - errors.extend(lexer.take_errors()); - - let ss_tok: Stylesheet = parse_tokens( - &tokens, - ParserConfig { - ..Default::default() - }, - &mut errors, - ) - .expect("failed to parse token"); - - for err in errors { - err.to_diagnostics(&handler).emit(); - } - - let json_from_tokens = serde_json::to_string_pretty(&ss_tok) - .map(NormalizedOutput::from) - .expect("failed to serialize stylesheet from tokens"); - - assert_eq!(actual_json, json_from_tokens); - } - Ok(()) } Err(err) => { let mut d = err.to_diagnostics(&handler); - d.note(&format!("current token = {}", parser.dump_cur())); d.emit(); @@ -126,32 +107,11 @@ fn test_pass(input: PathBuf, config: ParserConfig) { .unwrap(); } -#[testing::fixture("tests/fixture/**/input.css")] -fn pass(input: PathBuf) { - test_pass( - input, - ParserConfig { - ..Default::default() - }, - ) -} - -#[testing::fixture("tests/line-comment/**/input.css")] -fn line_comments(input: PathBuf) { - test_pass( - input, - ParserConfig { - allow_wrong_line_comments: true, - ..Default::default() - }, - ) -} - -#[testing::fixture("tests/recovery/**/input.css")] -fn recovery(input: PathBuf) { +fn stylesheet_recovery_test(input: PathBuf, config: ParserConfig) { let stderr_path = input.parent().unwrap().join("output.swc-stderr"); + let ref_json_path = input.parent().unwrap().join("output.json"); - let mut errored = false; + let mut recovered = false; let stderr = testing::run_test2(false, |cm, handler| { if false { @@ -159,16 +119,19 @@ fn recovery(input: PathBuf) { return Ok(()); } - let ref_json_path = input.parent().unwrap().join("output.json"); - - let config = ParserConfig { - allow_wrong_line_comments: false, - }; let fm = cm.load_file(&input).unwrap(); let lexer = Lexer::new(SourceFileInput::from(&*fm), config); let mut parser = Parser::new(lexer, config); - let stylesheet = parser.parse_all(); + let errors = parser.take_errors(); + + for err in &errors { + err.to_diagnostics(&handler).emit(); + } + + if !errors.is_empty() { + recovered = true; + } match stylesheet { Ok(stylesheet) => { @@ -178,59 +141,98 @@ fn recovery(input: PathBuf) { actual_json.clone().compare_to_file(&ref_json_path).unwrap(); - { - let mut errors = vec![]; - - let mut lexer = Lexer::new(SourceFileInput::from(&*fm), Default::default()); - let mut tokens = Tokens { - span: Span::new(fm.start_pos, fm.end_pos, Default::default()), - tokens: vec![], - }; - - for token_and_span in lexer.by_ref() { - tokens.tokens.push(token_and_span); - } - - errors.extend(lexer.take_errors()); - - let ss_tok: Stylesheet = parse_tokens( - &tokens, - ParserConfig { - ..Default::default() - }, - &mut errors, - ) - .expect("failed to parse token"); - - for err in errors { - err.to_diagnostics(&handler).emit(); - } - - let json_from_tokens = serde_json::to_string_pretty(&ss_tok) - .map(NormalizedOutput::from) - .expect("failed to serialize stylesheet from tokens"); - - assert_eq!(actual_json, json_from_tokens); - } - Err(()) } Err(err) => { let mut d = err.to_diagnostics(&handler); + d.note(&format!("current token = {}", parser.dump_cur())); - d.emit(); - errored = true; - Err(()) } } }) .unwrap_err(); - if errored { - panic!("Parser should recover, but failed with {}", stderr); + if !recovered { + panic!( + "Parser should emit errors (recover mode), but parser parsed everything successfully \ + {}", + stderr + ); + } + + stderr.compare_to_file(&stderr_path).unwrap(); +} + +fn stylesheet_recovery_test_tokens(input: PathBuf, config: ParserConfig) { + let stderr_path = input.parent().unwrap().join("output.swc-stderr"); + let ref_json_path = input.parent().unwrap().join("output.json"); + + let mut recovered = false; + + let stderr = testing::run_test2(false, |cm, handler| { + if false { + // For type inference + return Ok(()); + } + + let fm = cm.load_file(&input).unwrap(); + let mut errors = vec![]; + let tokens = { + let mut lexer = Lexer::new(SourceFileInput::from(&*fm), Default::default()); + let mut tokens = vec![]; + + for token_and_span in lexer.by_ref() { + tokens.push(token_and_span); + } + + errors.extend(lexer.take_errors()); + + Tokens { + span: Span::new(fm.start_pos, fm.end_pos, Default::default()), + tokens, + } + }; + + let stylesheet: PResult = parse_tokens(&tokens, config, &mut errors); + + for err in &errors { + err.to_diagnostics(&handler).emit(); + } + + if !errors.is_empty() { + recovered = true; + } + + match stylesheet { + Ok(stylesheet) => { + let actual_json = serde_json::to_string_pretty(&stylesheet) + .map(NormalizedOutput::from) + .expect("failed to serialize stylesheet"); + + actual_json.clone().compare_to_file(&ref_json_path).unwrap(); + + Err(()) + } + Err(err) => { + let mut d = err.to_diagnostics(&handler); + + d.emit(); + + Err(()) + } + } + }) + .unwrap_err(); + + if !recovered { + panic!( + "Parser should emit errors (recover mode), but parser parsed everything successfully \ + {}", + stderr + ); } stderr.compare_to_file(&stderr_path).unwrap(); @@ -478,8 +480,7 @@ impl Visit for SpanVisualizer<'_> { } } -#[testing::fixture("tests/fixture/**/input.css")] -fn span(input: PathBuf) { +fn stylesheet_span_visualizer(input: PathBuf) { let dir = input.parent().unwrap().to_path_buf(); let output = testing::run_test2(false, |cm, handler| { @@ -520,3 +521,48 @@ fn span(input: PathBuf) { .compare_to_file(&dir.join("span.rust-debug")) .unwrap(); } + +#[testing::fixture("tests/fixture/**/input.css")] +fn pass(input: PathBuf) { + stylesheet_test(input.clone(), Default::default()); + stylesheet_test_tokens(input, Default::default()); +} + +#[testing::fixture("tests/line-comment/**/input.css")] +fn line_comments_pass(input: PathBuf) { + stylesheet_test( + input, + ParserConfig { + allow_wrong_line_comments: true, + ..Default::default() + }, + ) +} + +// TODO fix exclude +#[testing::fixture( + "tests/recovery/**/input.css", + exclude( + "at-rule/media/condition/input.css", + "at-rule/media/condition-1/input.css", + "at-rule/page/invalid-nesting/input.css", + "at-rule/page/without-page/input.css", + "at-rule/unknown/input.css", + "function/calc/division/input.css", + "function/calc/space/input.css", + "function/var/input.css", + "qualified-rule/only-block/input.css", + "whitespaces/input.css", + ) +)] +fn recovery(input: PathBuf) { + stylesheet_recovery_test(input.clone(), Default::default()); + stylesheet_recovery_test_tokens(input, Default::default()); +} + +#[testing::fixture("tests/fixture/**/input.css")] +#[testing::fixture("tests/line-comment/**/input.css")] +#[testing::fixture("tests/recovery/**/input.css")] +fn span_visualizer(input: PathBuf) { + stylesheet_span_visualizer(input) +} diff --git a/crates/swc_css_parser/tests/line-comment/css-in-js/1/span.rust-debug b/crates/swc_css_parser/tests/line-comment/css-in-js/1/span.rust-debug new file mode 100644 index 00000000000..15fbf9fa2d6 --- /dev/null +++ b/crates/swc_css_parser/tests/line-comment/css-in-js/1/span.rust-debug @@ -0,0 +1,135 @@ + + x Stylesheet + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:1:1] + 1 | ,-> // Line comment + 2 | | foo { + 3 | | color: red; + 4 | `-> } + `---- + + x Rule + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:1:1] + 1 | ,-> // Line comment + 2 | | foo { + 3 | | color: red; + 4 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:1:1] + 1 | ,-> // Line comment + 2 | | foo { + 3 | | color: red; + 4 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:1:1] + 1 | ,-> // Line comment + 2 | `-> foo { + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:1:1] + 1 | // Line comment + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:1:1] + 1 | // Line comment + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:1:1] + 1 | // Line comment + : ^ + `---- + + x Ident { value: Atom('Line' type=inline), raw: Atom('Line' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:1:1] + 1 | // Line comment + : ^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:1:1] + 1 | // Line comment + : ^ + `---- + + x Ident { value: Atom('comment' type=inline), raw: Atom('comment' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:1:1] + 1 | // Line comment + : ^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:1:1] + 1 | // Line comment + : ^ + 2 | foo { + `---- + + x Ident { value: Atom('foo' type=inline), raw: Atom('foo' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:2:1] + 2 | foo { + : ^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:2:1] + 2 | foo { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:2:1] + 2 | ,-> foo { + 3 | | color: red; + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:3:5] + 3 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:3:5] + 3 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:3:5] + 3 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/line-comment/css-in-js/1/input.css:3:5] + 3 | color: red; + : ^^^ + `---- diff --git a/crates/swc_css_parser/tests/line-comment/css-in-js/10/span.rust-debug b/crates/swc_css_parser/tests/line-comment/css-in-js/10/span.rust-debug new file mode 100644 index 00000000000..af212950aa4 --- /dev/null +++ b/crates/swc_css_parser/tests/line-comment/css-in-js/10/span.rust-debug @@ -0,0 +1,84 @@ + + x Stylesheet + ,-[$DIR/tests/line-comment/css-in-js/10/input.css:1:1] + 1 | // Only comment // test + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/line-comment/css-in-js/10/input.css:1:1] + 1 | // Only comment // test + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/line-comment/css-in-js/10/input.css:1:1] + 1 | // Only comment // test + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/10/input.css:1:1] + 1 | // Only comment // test + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/10/input.css:1:1] + 1 | // Only comment // test + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/10/input.css:1:1] + 1 | // Only comment // test + : ^ + `---- + + x Ident { value: Atom('Only' type=inline), raw: Atom('Only' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/10/input.css:1:1] + 1 | // Only comment // test + : ^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/10/input.css:1:1] + 1 | // Only comment // test + : ^ + `---- + + x Ident { value: Atom('comment' type=inline), raw: Atom('comment' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/10/input.css:1:1] + 1 | // Only comment // test + : ^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/10/input.css:1:1] + 1 | // Only comment // test + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/10/input.css:1:1] + 1 | // Only comment // test + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/10/input.css:1:1] + 1 | // Only comment // test + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/10/input.css:1:1] + 1 | // Only comment // test + : ^ + `---- + + x Ident { value: Atom('test' type=inline), raw: Atom('test' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/10/input.css:1:1] + 1 | // Only comment // test + : ^^^^ + `---- diff --git a/crates/swc_css_parser/tests/line-comment/css-in-js/2/span.rust-debug b/crates/swc_css_parser/tests/line-comment/css-in-js/2/span.rust-debug new file mode 100644 index 00000000000..1de017ffdf2 --- /dev/null +++ b/crates/swc_css_parser/tests/line-comment/css-in-js/2/span.rust-debug @@ -0,0 +1,165 @@ + + x Stylesheet + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:1:1] + 1 | ,-> foo { + 2 | | // Line comment + 3 | | color: red; + 4 | `-> } + `---- + + x Rule + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:1:1] + 1 | ,-> foo { + 2 | | // Line comment + 3 | | color: red; + 4 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:1:1] + 1 | ,-> foo { + 2 | | // Line comment + 3 | | color: red; + 4 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x WqName + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:1:1] + 1 | ,-> foo { + 2 | | // Line comment + 3 | | color: red; + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:2:5] + 2 | ,-> // Line comment + 3 | `-> color: red; + `---- + + x StyleBlock + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:2:5] + 2 | ,-> // Line comment + 3 | `-> color: red; + `---- + + x Tokens + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:2:5] + 2 | ,-> // Line comment + 3 | `-> color: red; + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:2:5] + 2 | // Line comment + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:2:5] + 2 | // Line comment + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:2:5] + 2 | // Line comment + : ^ + `---- + + x Ident { value: Atom('Line' type=inline), raw: Atom('Line' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:2:5] + 2 | // Line comment + : ^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:2:5] + 2 | // Line comment + : ^ + `---- + + x Ident { value: Atom('comment' type=inline), raw: Atom('comment' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:2:5] + 2 | // Line comment + : ^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:2:5] + 2 | ,-> // Line comment + 3 | `-> color: red; + `---- + + x Ident { value: Atom('color' type=inline), raw: Atom('color' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:3:5] + 3 | color: red; + : ^^^^^ + `---- + + x Colon + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:3:5] + 3 | color: red; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:3:5] + 3 | color: red; + : ^ + `---- + + x Ident { value: Atom('red' type=inline), raw: Atom('red' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:3:5] + 3 | color: red; + : ^^^ + `---- + + x Semi + ,-[$DIR/tests/line-comment/css-in-js/2/input.css:3:5] + 3 | color: red; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/line-comment/css-in-js/3/span.rust-debug b/crates/swc_css_parser/tests/line-comment/css-in-js/3/span.rust-debug new file mode 100644 index 00000000000..e80d06139ef --- /dev/null +++ b/crates/swc_css_parser/tests/line-comment/css-in-js/3/span.rust-debug @@ -0,0 +1,181 @@ + + x Stylesheet + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:1:1] + 1 | ,-> foo { + 2 | | color: red; + 3 | | // Line comment + 4 | `-> } + `---- + + x Rule + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:1:1] + 1 | ,-> foo { + 2 | | color: red; + 3 | | // Line comment + 4 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:1:1] + 1 | ,-> foo { + 2 | | color: red; + 3 | | // Line comment + 4 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x WqName + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:1:1] + 1 | ,-> foo { + 2 | | color: red; + 3 | | // Line comment + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:2:5] + 2 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:2:5] + 2 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:2:5] + 2 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:2:5] + 2 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:2:5] + 2 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:2:5] + 2 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:2:5] + 2 | color: red; + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:3:5] + 3 | // Line comment + : ^^^^^^^^^^^^^^^^ + 4 | } + `---- + + x StyleBlock + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:3:5] + 3 | // Line comment + : ^^^^^^^^^^^^^^^^ + 4 | } + `---- + + x Tokens + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:3:5] + 3 | // Line comment + : ^^^^^^^^^^^^^^^^ + 4 | } + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:3:5] + 3 | // Line comment + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:3:5] + 3 | // Line comment + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:3:5] + 3 | // Line comment + : ^ + `---- + + x Ident { value: Atom('Line' type=inline), raw: Atom('Line' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:3:5] + 3 | // Line comment + : ^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:3:5] + 3 | // Line comment + : ^ + `---- + + x Ident { value: Atom('comment' type=inline), raw: Atom('comment' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:3:5] + 3 | // Line comment + : ^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/3/input.css:3:5] + 3 | // Line comment + : ^ + 4 | } + `---- diff --git a/crates/swc_css_parser/tests/line-comment/css-in-js/4/span.rust-debug b/crates/swc_css_parser/tests/line-comment/css-in-js/4/span.rust-debug new file mode 100644 index 00000000000..b1097e6574a --- /dev/null +++ b/crates/swc_css_parser/tests/line-comment/css-in-js/4/span.rust-debug @@ -0,0 +1,211 @@ + + x Stylesheet + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:1:1] + 1 | ,-> foo { + 2 | | color: red; + 3 | | // Line comment + 4 | | top: 0; + 5 | `-> } + `---- + + x Rule + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:1:1] + 1 | ,-> foo { + 2 | | color: red; + 3 | | // Line comment + 4 | | top: 0; + 5 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:1:1] + 1 | ,-> foo { + 2 | | color: red; + 3 | | // Line comment + 4 | | top: 0; + 5 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x WqName + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:1:1] + 1 | ,-> foo { + 2 | | color: red; + 3 | | // Line comment + 4 | | top: 0; + 5 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:2:5] + 2 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:2:5] + 2 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:2:5] + 2 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:2:5] + 2 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:2:5] + 2 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:2:5] + 2 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:2:5] + 2 | color: red; + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:3:5] + 3 | ,-> // Line comment + 4 | `-> top: 0; + `---- + + x StyleBlock + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:3:5] + 3 | ,-> // Line comment + 4 | `-> top: 0; + `---- + + x Tokens + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:3:5] + 3 | ,-> // Line comment + 4 | `-> top: 0; + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:3:5] + 3 | // Line comment + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:3:5] + 3 | // Line comment + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:3:5] + 3 | // Line comment + : ^ + `---- + + x Ident { value: Atom('Line' type=inline), raw: Atom('Line' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:3:5] + 3 | // Line comment + : ^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:3:5] + 3 | // Line comment + : ^ + `---- + + x Ident { value: Atom('comment' type=inline), raw: Atom('comment' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:3:5] + 3 | // Line comment + : ^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:3:5] + 3 | ,-> // Line comment + 4 | `-> top: 0; + `---- + + x Ident { value: Atom('top' type=inline), raw: Atom('top' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:4:5] + 4 | top: 0; + : ^^^ + `---- + + x Colon + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:4:5] + 4 | top: 0; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:4:5] + 4 | top: 0; + : ^ + `---- + + x Number { value: 0.0, raw: Atom('0' type=inline), type_flag: Integer } + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:4:5] + 4 | top: 0; + : ^ + `---- + + x Semi + ,-[$DIR/tests/line-comment/css-in-js/4/input.css:4:5] + 4 | top: 0; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/line-comment/css-in-js/5/span.rust-debug b/crates/swc_css_parser/tests/line-comment/css-in-js/5/span.rust-debug new file mode 100644 index 00000000000..ac39217ec14 --- /dev/null +++ b/crates/swc_css_parser/tests/line-comment/css-in-js/5/span.rust-debug @@ -0,0 +1,183 @@ + + x Stylesheet + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:1:1] + 1 | ,-> // Line comment + 2 | | // Line comment + 3 | | foo { + 4 | | color: red; + 5 | `-> } + `---- + + x Rule + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:1:1] + 1 | ,-> // Line comment + 2 | | // Line comment + 3 | | foo { + 4 | | color: red; + 5 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:1:1] + 1 | ,-> // Line comment + 2 | | // Line comment + 3 | | foo { + 4 | | color: red; + 5 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:1:1] + 1 | ,-> // Line comment + 2 | | // Line comment + 3 | `-> foo { + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:1:1] + 1 | // Line comment + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:1:1] + 1 | // Line comment + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:1:1] + 1 | // Line comment + : ^ + `---- + + x Ident { value: Atom('Line' type=inline), raw: Atom('Line' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:1:1] + 1 | // Line comment + : ^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:1:1] + 1 | // Line comment + : ^ + `---- + + x Ident { value: Atom('comment' type=inline), raw: Atom('comment' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:1:1] + 1 | // Line comment + : ^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:1:1] + 1 | // Line comment + : ^ + 2 | // Line comment + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:2:1] + 2 | // Line comment + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:2:1] + 2 | // Line comment + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:2:1] + 2 | // Line comment + : ^ + `---- + + x Ident { value: Atom('Line' type=inline), raw: Atom('Line' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:2:1] + 2 | // Line comment + : ^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:2:1] + 2 | // Line comment + : ^ + `---- + + x Ident { value: Atom('comment' type=inline), raw: Atom('comment' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:2:1] + 2 | // Line comment + : ^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:2:1] + 2 | // Line comment + : ^ + 3 | foo { + `---- + + x Ident { value: Atom('foo' type=inline), raw: Atom('foo' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:3:1] + 3 | foo { + : ^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:3:1] + 3 | foo { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:3:1] + 3 | ,-> foo { + 4 | | color: red; + 5 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:4:5] + 4 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:4:5] + 4 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:4:5] + 4 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/line-comment/css-in-js/5/input.css:4:5] + 4 | color: red; + : ^^^ + `---- diff --git a/crates/swc_css_parser/tests/line-comment/css-in-js/6/span.rust-debug b/crates/swc_css_parser/tests/line-comment/css-in-js/6/span.rust-debug new file mode 100644 index 00000000000..b4cd4e17203 --- /dev/null +++ b/crates/swc_css_parser/tests/line-comment/css-in-js/6/span.rust-debug @@ -0,0 +1,215 @@ + + x Stylesheet + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:1:1] + 1 | ,-> foo { + 2 | | // Line comment + 3 | | // Line comment + 4 | | color: red; + 5 | `-> } + `---- + + x Rule + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:1:1] + 1 | ,-> foo { + 2 | | // Line comment + 3 | | // Line comment + 4 | | color: red; + 5 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:1:1] + 1 | ,-> foo { + 2 | | // Line comment + 3 | | // Line comment + 4 | | color: red; + 5 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x WqName + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:1:1] + 1 | foo { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:1:1] + 1 | ,-> foo { + 2 | | // Line comment + 3 | | // Line comment + 4 | | color: red; + 5 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:2:5] + 2 | ,-> // Line comment + 3 | | // Line comment + 4 | `-> color: red; + `---- + + x StyleBlock + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:2:5] + 2 | ,-> // Line comment + 3 | | // Line comment + 4 | `-> color: red; + `---- + + x Tokens + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:2:5] + 2 | ,-> // Line comment + 3 | | // Line comment + 4 | `-> color: red; + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:2:5] + 2 | // Line comment + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:2:5] + 2 | // Line comment + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:2:5] + 2 | // Line comment + : ^ + `---- + + x Ident { value: Atom('Line' type=inline), raw: Atom('Line' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:2:5] + 2 | // Line comment + : ^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:2:5] + 2 | // Line comment + : ^ + `---- + + x Ident { value: Atom('comment' type=inline), raw: Atom('comment' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:2:5] + 2 | // Line comment + : ^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:2:5] + 2 | ,-> // Line comment + 3 | `-> // Line comment + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:3:5] + 3 | // Line comment + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:3:5] + 3 | // Line comment + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:3:5] + 3 | // Line comment + : ^ + `---- + + x Ident { value: Atom('Line' type=inline), raw: Atom('Line' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:3:5] + 3 | // Line comment + : ^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:3:5] + 3 | // Line comment + : ^ + `---- + + x Ident { value: Atom('comment' type=inline), raw: Atom('comment' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:3:5] + 3 | // Line comment + : ^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:3:5] + 3 | ,-> // Line comment + 4 | `-> color: red; + `---- + + x Ident { value: Atom('color' type=inline), raw: Atom('color' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:4:5] + 4 | color: red; + : ^^^^^ + `---- + + x Colon + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:4:5] + 4 | color: red; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:4:5] + 4 | color: red; + : ^ + `---- + + x Ident { value: Atom('red' type=inline), raw: Atom('red' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:4:5] + 4 | color: red; + : ^^^ + `---- + + x Semi + ,-[$DIR/tests/line-comment/css-in-js/6/input.css:4:5] + 4 | color: red; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/line-comment/css-in-js/7/span.rust-debug b/crates/swc_css_parser/tests/line-comment/css-in-js/7/span.rust-debug new file mode 100644 index 00000000000..7397699357f --- /dev/null +++ b/crates/swc_css_parser/tests/line-comment/css-in-js/7/span.rust-debug @@ -0,0 +1,30 @@ + + x Stylesheet + ,-[$DIR/tests/line-comment/css-in-js/7/input.css:1:1] + 1 | // + : ^^ + `---- + + x Rule + ,-[$DIR/tests/line-comment/css-in-js/7/input.css:1:1] + 1 | // + : ^^ + `---- + + x Tokens + ,-[$DIR/tests/line-comment/css-in-js/7/input.css:1:1] + 1 | // + : ^^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/7/input.css:1:1] + 1 | // + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/7/input.css:1:1] + 1 | // + : ^ + `---- diff --git a/crates/swc_css_parser/tests/line-comment/css-in-js/8/span.rust-debug b/crates/swc_css_parser/tests/line-comment/css-in-js/8/span.rust-debug new file mode 100644 index 00000000000..043f891ec27 --- /dev/null +++ b/crates/swc_css_parser/tests/line-comment/css-in-js/8/span.rust-debug @@ -0,0 +1,30 @@ + + x Stylesheet + ,-[$DIR/tests/line-comment/css-in-js/8/input.css:1:1] + 1 | // + : ^^ + `---- + + x Rule + ,-[$DIR/tests/line-comment/css-in-js/8/input.css:1:1] + 1 | // + : ^^ + `---- + + x Tokens + ,-[$DIR/tests/line-comment/css-in-js/8/input.css:1:1] + 1 | // + : ^^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/8/input.css:1:1] + 1 | // + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/8/input.css:1:1] + 1 | // + : ^ + `---- diff --git a/crates/swc_css_parser/tests/line-comment/css-in-js/9/span.rust-debug b/crates/swc_css_parser/tests/line-comment/css-in-js/9/span.rust-debug new file mode 100644 index 00000000000..f34d1411c40 --- /dev/null +++ b/crates/swc_css_parser/tests/line-comment/css-in-js/9/span.rust-debug @@ -0,0 +1,54 @@ + + x Stylesheet + ,-[$DIR/tests/line-comment/css-in-js/9/input.css:1:1] + 1 | // Only comment + : ^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/line-comment/css-in-js/9/input.css:1:1] + 1 | // Only comment + : ^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/line-comment/css-in-js/9/input.css:1:1] + 1 | // Only comment + : ^^^^^^^^^^^^^^^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/9/input.css:1:1] + 1 | // Only comment + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/line-comment/css-in-js/9/input.css:1:1] + 1 | // Only comment + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/9/input.css:1:1] + 1 | // Only comment + : ^ + `---- + + x Ident { value: Atom('Only' type=inline), raw: Atom('Only' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/9/input.css:1:1] + 1 | // Only comment + : ^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/9/input.css:1:1] + 1 | // Only comment + : ^ + `---- + + x Ident { value: Atom('comment' type=inline), raw: Atom('comment' type=inline) } + ,-[$DIR/tests/line-comment/css-in-js/9/input.css:1:1] + 1 | // Only comment + : ^^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/extra-semi/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/extra-semi/span.rust-debug new file mode 100644 index 00000000000..1f5e3a747af --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/extra-semi/span.rust-debug @@ -0,0 +1,131 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:1:1] + 1 | ,-> @import "x.css";; + 2 | | + 3 | | .color { + 4 | `-> color: red; + 5 | } + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:1:1] + 1 | @import "x.css";; + : ^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:1:1] + 1 | @import "x.css";; + : ^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:1:1] + 1 | @import "x.css";; + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:1:1] + 1 | @import "x.css";; + : ^^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:1:1] + 1 | @import "x.css";; + : ^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:1:1] + 1 | ,-> @import "x.css";; + 2 | | + 3 | | .color { + 4 | `-> color: red; + `---- + + x Tokens + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:1:1] + 1 | ,-> @import "x.css";; + 2 | | + 3 | | .color { + 4 | `-> color: red; + `---- + + x Semi + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:1:1] + 1 | @import "x.css";; + : ^ + `---- + + x WhiteSpace { value: Atom(' + | + | ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:1:1] + 1 | ,-> @import "x.css";; + 2 | `-> + 3 | .color { + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:3:1] + 3 | .color { + : ^ + `---- + + x Ident { value: Atom('color' type=inline), raw: Atom('color' type=inline) } + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:3:1] + 3 | .color { + : ^^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:3:1] + 3 | .color { + : ^ + `---- + + x LBrace + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:3:1] + 3 | .color { + : ^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:3:1] + 3 | ,-> .color { + 4 | `-> color: red; + `---- + + x Ident { value: Atom('color' type=inline), raw: Atom('color' type=inline) } + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:4:5] + 4 | color: red; + : ^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:4:5] + 4 | color: red; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:4:5] + 4 | color: red; + : ^ + `---- + + x Ident { value: Atom('red' type=inline), raw: Atom('red' type=inline) } + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:4:5] + 4 | color: red; + : ^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/at-rule/extra-semi/input.css:4:5] + 4 | color: red; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/font-face/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/font-face/span.rust-debug new file mode 100644 index 00000000000..84e69d01b2e --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/font-face/span.rust-debug @@ -0,0 +1,399 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:1:1] + 1 | ,-> @font-face { + 2 | | invalid + 3 | | } + 4 | | + 5 | | @font-face { + 6 | | invalid; + 7 | | } + 8 | | + 9 | | @font-face { + 10 | | 123 + 11 | | } + 12 | | + 13 | | @font-face { + 14 | | 123; + 15 | | } + 16 | | + 17 | | @font-face foo {} + 18 | | + 19 | | @font-face foo; + 20 | | + 21 | `-> @font-face ; + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:1:1] + 1 | ,-> @font-face { + 2 | | invalid + 3 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:1:1] + 1 | ,-> @font-face { + 2 | | invalid + 3 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:1:1] + 1 | @font-face { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:1:1] + 1 | @font-face { + : ^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:1:1] + 1 | ,-> @font-face { + 2 | | invalid + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:2:5] + 2 | invalid + : ^^^^^^^^ + 3 | } + `---- + + x Tokens + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:2:5] + 2 | invalid + : ^^^^^^^^ + 3 | } + `---- + + x Ident { value: Atom('invalid' type=inline), raw: Atom('invalid' type=inline) } + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:2:5] + 2 | invalid + : ^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:2:5] + 2 | invalid + : ^ + 3 | } + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:5:1] + 5 | ,-> @font-face { + 6 | | invalid; + 7 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:5:1] + 5 | ,-> @font-face { + 6 | | invalid; + 7 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:5:1] + 5 | @font-face { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:5:1] + 5 | @font-face { + : ^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:5:1] + 5 | ,-> @font-face { + 6 | | invalid; + 7 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:6:5] + 6 | invalid; + : ^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:6:5] + 6 | invalid; + : ^^^^^^^^ + `---- + + x Ident { value: Atom('invalid' type=inline), raw: Atom('invalid' type=inline) } + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:6:5] + 6 | invalid; + : ^^^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:6:5] + 6 | invalid; + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:9:1] + 9 | ,-> @font-face { + 10 | | 123 + 11 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:9:1] + 9 | ,-> @font-face { + 10 | | 123 + 11 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:9:1] + 9 | @font-face { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:9:1] + 9 | @font-face { + : ^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:9:1] + 9 | ,-> @font-face { + 10 | | 123 + 11 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:10:5] + 10 | 123 + : ^^^^ + 11 | } + `---- + + x Tokens + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:10:5] + 10 | 123 + : ^^^^ + 11 | } + `---- + + x Number { value: 123.0, raw: Atom('123' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:10:5] + 10 | 123 + : ^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:10:5] + 10 | 123 + : ^ + 11 | } + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:13:1] + 13 | ,-> @font-face { + 14 | | 123; + 15 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:13:1] + 13 | ,-> @font-face { + 14 | | 123; + 15 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:13:1] + 13 | @font-face { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:13:1] + 13 | @font-face { + : ^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:13:1] + 13 | ,-> @font-face { + 14 | | 123; + 15 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:14:5] + 14 | 123; + : ^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:14:5] + 14 | 123; + : ^^^^ + `---- + + x Number { value: 123.0, raw: Atom('123' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:14:5] + 14 | 123; + : ^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:14:5] + 14 | 123; + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:17:1] + 17 | @font-face foo {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:17:1] + 17 | @font-face foo {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:17:1] + 17 | @font-face foo {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:17:1] + 17 | @font-face foo {} + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:17:1] + 17 | @font-face foo {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:17:1] + 17 | @font-face foo {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:17:1] + 17 | @font-face foo {} + : ^^^ + `---- + + x Ident { value: Atom('foo' type=inline), raw: Atom('foo' type=inline) } + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:17:1] + 17 | @font-face foo {} + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:17:1] + 17 | @font-face foo {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:19:1] + 19 | @font-face foo; + : ^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:19:1] + 19 | @font-face foo; + : ^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:19:1] + 19 | @font-face foo; + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:19:1] + 19 | @font-face foo; + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:19:1] + 19 | @font-face foo; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:19:1] + 19 | @font-face foo; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:19:1] + 19 | @font-face foo; + : ^^^ + `---- + + x Ident { value: Atom('foo' type=inline), raw: Atom('foo' type=inline) } + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:19:1] + 19 | @font-face foo; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:21:1] + 21 | @font-face ; + : ^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:21:1] + 21 | @font-face ; + : ^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:21:1] + 21 | @font-face ; + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:21:1] + 21 | @font-face ; + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:21:1] + 21 | @font-face ; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/font-face/input.css:21:1] + 21 | @font-face ; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/import/empty/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/import/empty/span.rust-debug new file mode 100644 index 00000000000..826112f195d --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/import/empty/span.rust-debug @@ -0,0 +1,42 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/import/empty/input.css:1:1] + 1 | @import ; + : ^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/import/empty/input.css:1:1] + 1 | @import ; + : ^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/import/empty/input.css:1:1] + 1 | @import ; + : ^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/import/empty/input.css:1:1] + 1 | @import ; + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/import/empty/input.css:1:1] + 1 | @import ; + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/import/empty/input.css:1:1] + 1 | @import ; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/import/empty/input.css:1:1] + 1 | @import ; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/import/indent/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/import/indent/span.rust-debug new file mode 100644 index 00000000000..f484505f3dd --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/import/indent/span.rust-debug @@ -0,0 +1,54 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/import/indent/input.css:1:1] + 1 | @import foo-bar; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/import/indent/input.css:1:1] + 1 | @import foo-bar; + : ^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/import/indent/input.css:1:1] + 1 | @import foo-bar; + : ^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/import/indent/input.css:1:1] + 1 | @import foo-bar; + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/import/indent/input.css:1:1] + 1 | @import foo-bar; + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/import/indent/input.css:1:1] + 1 | @import foo-bar; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/import/indent/input.css:1:1] + 1 | @import foo-bar; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/import/indent/input.css:1:1] + 1 | @import foo-bar; + : ^^^^^^^ + `---- + + x Ident { value: Atom('foo-bar' type=inline), raw: Atom('foo-bar' type=inline) } + ,-[$DIR/tests/recovery/at-rule/import/indent/input.css:1:1] + 1 | @import foo-bar; + : ^^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/import/no-semi/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/import/no-semi/span.rust-debug new file mode 100644 index 00000000000..b34885c9ba7 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/import/no-semi/span.rust-debug @@ -0,0 +1,126 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^^^^^^^^^ + `---- + + x String { value: Atom('http://' type=inline), raw: Atom(''http://'' type=dynamic) } + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^^^^ + `---- + + x Ident { value: Atom('root' type=inline), raw: Atom('root' type=inline) } + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/import/no-semi/input.css:1:1] + 1 | @import url('http://') :root {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/import/no-url/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/import/no-url/span.rust-debug new file mode 100644 index 00000000000..36a6dfd2701 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/import/no-url/span.rust-debug @@ -0,0 +1,120 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:1:1] + 1 | ,-> @import nourl(test); + 2 | `-> @import 123; + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:1:1] + 1 | @import nourl(test); + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:1:1] + 1 | @import nourl(test); + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:1:1] + 1 | @import nourl(test); + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:1:1] + 1 | @import nourl(test); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:1:1] + 1 | @import nourl(test); + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:1:1] + 1 | @import nourl(test); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:1:1] + 1 | @import nourl(test); + : ^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:1:1] + 1 | @import nourl(test); + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:1:1] + 1 | @import nourl(test); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:1:1] + 1 | @import nourl(test); + : ^^^^ + `---- + + x Ident { value: Atom('test' type=inline), raw: Atom('test' type=inline) } + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:1:1] + 1 | @import nourl(test); + : ^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:2:1] + 2 | @import 123; + : ^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:2:1] + 2 | @import 123; + : ^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:2:1] + 2 | @import 123; + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:2:1] + 2 | @import 123; + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:2:1] + 2 | @import 123; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:2:1] + 2 | @import 123; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:2:1] + 2 | @import 123; + : ^^^ + `---- + + x Number { value: 123.0, raw: Atom('123' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/import/no-url/input.css:2:1] + 2 | @import 123; + : ^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident-1/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident-1/span.rust-debug new file mode 100644 index 00000000000..044b04f3c2b --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident-1/span.rust-debug @@ -0,0 +1,72 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-1/input.css:1:1] + 1 | @keyframes None {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-1/input.css:1:1] + 1 | @keyframes None {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-1/input.css:1:1] + 1 | @keyframes None {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-1/input.css:1:1] + 1 | @keyframes None {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-1/input.css:1:1] + 1 | @keyframes None {} + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-1/input.css:1:1] + 1 | @keyframes None {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-1/input.css:1:1] + 1 | @keyframes None {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-1/input.css:1:1] + 1 | @keyframes None {} + : ^^^^ + `---- + + x Ident { value: Atom('None' type=inline), raw: Atom('None' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-1/input.css:1:1] + 1 | @keyframes None {} + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-1/input.css:1:1] + 1 | @keyframes None {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-1/input.css:1:1] + 1 | @keyframes None {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-1/input.css:1:1] + 1 | @keyframes None {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident-2/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident-2/span.rust-debug new file mode 100644 index 00000000000..443a3fbcc2a --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident-2/span.rust-debug @@ -0,0 +1,72 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-2/input.css:1:1] + 1 | @keyframes inherit {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-2/input.css:1:1] + 1 | @keyframes inherit {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-2/input.css:1:1] + 1 | @keyframes inherit {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-2/input.css:1:1] + 1 | @keyframes inherit {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-2/input.css:1:1] + 1 | @keyframes inherit {} + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-2/input.css:1:1] + 1 | @keyframes inherit {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-2/input.css:1:1] + 1 | @keyframes inherit {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-2/input.css:1:1] + 1 | @keyframes inherit {} + : ^^^^^^^ + `---- + + x Ident { value: Atom('inherit' type=inline), raw: Atom('inherit' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-2/input.css:1:1] + 1 | @keyframes inherit {} + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-2/input.css:1:1] + 1 | @keyframes inherit {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-2/input.css:1:1] + 1 | @keyframes inherit {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-2/input.css:1:1] + 1 | @keyframes inherit {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident-3/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident-3/span.rust-debug new file mode 100644 index 00000000000..d9e23d0b0a6 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident-3/span.rust-debug @@ -0,0 +1,72 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-3/input.css:1:1] + 1 | @keyframes unset {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-3/input.css:1:1] + 1 | @keyframes unset {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-3/input.css:1:1] + 1 | @keyframes unset {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-3/input.css:1:1] + 1 | @keyframes unset {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-3/input.css:1:1] + 1 | @keyframes unset {} + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-3/input.css:1:1] + 1 | @keyframes unset {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-3/input.css:1:1] + 1 | @keyframes unset {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-3/input.css:1:1] + 1 | @keyframes unset {} + : ^^^^^ + `---- + + x Ident { value: Atom('unset' type=inline), raw: Atom('unset' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-3/input.css:1:1] + 1 | @keyframes unset {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-3/input.css:1:1] + 1 | @keyframes unset {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-3/input.css:1:1] + 1 | @keyframes unset {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-3/input.css:1:1] + 1 | @keyframes unset {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident-4/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident-4/span.rust-debug new file mode 100644 index 00000000000..e62e9ed16bd --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident-4/span.rust-debug @@ -0,0 +1,72 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-4/input.css:1:1] + 1 | @keyframes default {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-4/input.css:1:1] + 1 | @keyframes default {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-4/input.css:1:1] + 1 | @keyframes default {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-4/input.css:1:1] + 1 | @keyframes default {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-4/input.css:1:1] + 1 | @keyframes default {} + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-4/input.css:1:1] + 1 | @keyframes default {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-4/input.css:1:1] + 1 | @keyframes default {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-4/input.css:1:1] + 1 | @keyframes default {} + : ^^^^^^^ + `---- + + x Ident { value: Atom('default' type=static), raw: Atom('default' type=static) } + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-4/input.css:1:1] + 1 | @keyframes default {} + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-4/input.css:1:1] + 1 | @keyframes default {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-4/input.css:1:1] + 1 | @keyframes default {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident-4/input.css:1:1] + 1 | @keyframes default {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident/span.rust-debug new file mode 100644 index 00000000000..bc65b78c2fc --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/custom-ident/span.rust-debug @@ -0,0 +1,72 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident/input.css:1:1] + 1 | @keyframes initial {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident/input.css:1:1] + 1 | @keyframes initial {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident/input.css:1:1] + 1 | @keyframes initial {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident/input.css:1:1] + 1 | @keyframes initial {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident/input.css:1:1] + 1 | @keyframes initial {} + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident/input.css:1:1] + 1 | @keyframes initial {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident/input.css:1:1] + 1 | @keyframes initial {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident/input.css:1:1] + 1 | @keyframes initial {} + : ^^^^^^^ + `---- + + x Ident { value: Atom('initial' type=inline), raw: Atom('initial' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident/input.css:1:1] + 1 | @keyframes initial {} + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident/input.css:1:1] + 1 | @keyframes initial {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident/input.css:1:1] + 1 | @keyframes initial {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/keyframes/custom-ident/input.css:1:1] + 1 | @keyframes initial {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/keyframes/empty-name/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/empty-name/span.rust-debug new file mode 100644 index 00000000000..7070ec348c0 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/empty-name/span.rust-debug @@ -0,0 +1,48 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/keyframes/empty-name/input.css:1:1] + 1 | @keyframes {} + : ^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/keyframes/empty-name/input.css:1:1] + 1 | @keyframes {} + : ^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/keyframes/empty-name/input.css:1:1] + 1 | @keyframes {} + : ^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/keyframes/empty-name/input.css:1:1] + 1 | @keyframes {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/keyframes/empty-name/input.css:1:1] + 1 | @keyframes {} + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/empty-name/input.css:1:1] + 1 | @keyframes {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/empty-name/input.css:1:1] + 1 | @keyframes {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/keyframes/empty-name/input.css:1:1] + 1 | @keyframes {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/span.rust-debug new file mode 100644 index 00000000000..9f96c412d07 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/span.rust-debug @@ -0,0 +1,339 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:1:1] + 1 | ,-> @keyframes initial {} + 2 | | @keyframes inherit {} + 3 | | @keyframes unset {} + 4 | | @keyframes none {} + 5 | `-> @keyframes iNiTiAl {} + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:1:1] + 1 | @keyframes initial {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:1:1] + 1 | @keyframes initial {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:1:1] + 1 | @keyframes initial {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:1:1] + 1 | @keyframes initial {} + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:1:1] + 1 | @keyframes initial {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:1:1] + 1 | @keyframes initial {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:1:1] + 1 | @keyframes initial {} + : ^^^^^^^ + `---- + + x Ident { value: Atom('initial' type=inline), raw: Atom('initial' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:1:1] + 1 | @keyframes initial {} + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:1:1] + 1 | @keyframes initial {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:1:1] + 1 | @keyframes initial {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:1:1] + 1 | @keyframes initial {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:2:1] + 2 | @keyframes inherit {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:2:1] + 2 | @keyframes inherit {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:2:1] + 2 | @keyframes inherit {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:2:1] + 2 | @keyframes inherit {} + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:2:1] + 2 | @keyframes inherit {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:2:1] + 2 | @keyframes inherit {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:2:1] + 2 | @keyframes inherit {} + : ^^^^^^^ + `---- + + x Ident { value: Atom('inherit' type=inline), raw: Atom('inherit' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:2:1] + 2 | @keyframes inherit {} + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:2:1] + 2 | @keyframes inherit {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:2:1] + 2 | @keyframes inherit {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:2:1] + 2 | @keyframes inherit {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:3:1] + 3 | @keyframes unset {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:3:1] + 3 | @keyframes unset {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:3:1] + 3 | @keyframes unset {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:3:1] + 3 | @keyframes unset {} + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:3:1] + 3 | @keyframes unset {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:3:1] + 3 | @keyframes unset {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:3:1] + 3 | @keyframes unset {} + : ^^^^^ + `---- + + x Ident { value: Atom('unset' type=inline), raw: Atom('unset' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:3:1] + 3 | @keyframes unset {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:3:1] + 3 | @keyframes unset {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:3:1] + 3 | @keyframes unset {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:3:1] + 3 | @keyframes unset {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:4:1] + 4 | @keyframes none {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:4:1] + 4 | @keyframes none {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:4:1] + 4 | @keyframes none {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:4:1] + 4 | @keyframes none {} + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:4:1] + 4 | @keyframes none {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:4:1] + 4 | @keyframes none {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:4:1] + 4 | @keyframes none {} + : ^^^^ + `---- + + x Ident { value: Atom('none' type=inline), raw: Atom('none' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:4:1] + 4 | @keyframes none {} + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:4:1] + 4 | @keyframes none {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:4:1] + 4 | @keyframes none {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:4:1] + 4 | @keyframes none {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:5:1] + 5 | @keyframes iNiTiAl {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:5:1] + 5 | @keyframes iNiTiAl {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:5:1] + 5 | @keyframes iNiTiAl {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:5:1] + 5 | @keyframes iNiTiAl {} + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:5:1] + 5 | @keyframes iNiTiAl {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:5:1] + 5 | @keyframes iNiTiAl {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:5:1] + 5 | @keyframes iNiTiAl {} + : ^^^^^^^ + `---- + + x Ident { value: Atom('iNiTiAl' type=inline), raw: Atom('iNiTiAl' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:5:1] + 5 | @keyframes iNiTiAl {} + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:5:1] + 5 | @keyframes iNiTiAl {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:5:1] + 5 | @keyframes iNiTiAl {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-css-wide-keywords/input.css:5:1] + 5 | @keyframes iNiTiAl {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/keyframes/keyframe-keyword/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/keyframe-keyword/span.rust-debug new file mode 100644 index 00000000000..5b7476a970d --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/keyframe-keyword/span.rust-debug @@ -0,0 +1,217 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:1:1] + 1 | ,-> @keyframes foo { + 2 | | form {} + 3 | | } + 4 | | + 5 | | @keyframes foo { + 6 | | ot {} + 7 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:1:1] + 1 | ,-> @keyframes foo { + 2 | | form {} + 3 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:1:1] + 1 | ,-> @keyframes foo { + 2 | | form {} + 3 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:1:1] + 1 | @keyframes foo { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:1:1] + 1 | @keyframes foo { + : ^^^^^^^^^ + `---- + + x CustomIdent + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:1:1] + 1 | @keyframes foo { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:1:1] + 1 | ,-> @keyframes foo { + 2 | | form {} + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:1:1] + 1 | ,-> @keyframes foo { + 2 | `-> form {} + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:1:1] + 1 | ,-> @keyframes foo { + 2 | `-> form {} + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:2:5] + 2 | form {} + : ^^^^ + `---- + + x Ident { value: Atom('form' type=inline), raw: Atom('form' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:2:5] + 2 | form {} + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:2:5] + 2 | form {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:2:5] + 2 | form {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:2:5] + 2 | form {} + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:2:5] + 2 | form {} + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:2:5] + 2 | form {} + : ^ + 3 | } + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:2:5] + 2 | form {} + : ^ + 3 | } + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:5:1] + 5 | ,-> @keyframes foo { + 6 | | ot {} + 7 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:5:1] + 5 | ,-> @keyframes foo { + 6 | | ot {} + 7 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:5:1] + 5 | @keyframes foo { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:5:1] + 5 | @keyframes foo { + : ^^^^^^^^^ + `---- + + x CustomIdent + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:5:1] + 5 | @keyframes foo { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:5:1] + 5 | ,-> @keyframes foo { + 6 | | ot {} + 7 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:5:1] + 5 | ,-> @keyframes foo { + 6 | `-> ot {} + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:5:1] + 5 | ,-> @keyframes foo { + 6 | `-> ot {} + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:6:5] + 6 | ot {} + : ^^ + `---- + + x Ident { value: Atom('ot' type=inline), raw: Atom('ot' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:6:5] + 6 | ot {} + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:6:5] + 6 | ot {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:6:5] + 6 | ot {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:6:5] + 6 | ot {} + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:6:5] + 6 | ot {} + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:6:5] + 6 | ot {} + : ^ + 7 | } + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-keyword/input.css:6:5] + 6 | ot {} + : ^ + 7 | } + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/keyframes/keyframe-number/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/keyframe-number/span.rust-debug new file mode 100644 index 00000000000..63498766c46 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/keyframes/keyframe-number/span.rust-debug @@ -0,0 +1,136 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:1:1] + 1 | ,-> @keyframes foo { + 2 | | 10 { + 3 | | + 4 | | } + 5 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:1:1] + 1 | ,-> @keyframes foo { + 2 | | 10 { + 3 | | + 4 | | } + 5 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:1:1] + 1 | ,-> @keyframes foo { + 2 | | 10 { + 3 | | + 4 | | } + 5 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:1:1] + 1 | @keyframes foo { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:1:1] + 1 | @keyframes foo { + : ^^^^^^^^^ + `---- + + x CustomIdent + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:1:1] + 1 | @keyframes foo { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:1:1] + 1 | ,-> @keyframes foo { + 2 | | 10 { + 3 | | + 4 | | } + 5 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:1:1] + 1 | ,-> @keyframes foo { + 2 | `-> 10 { + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:1:1] + 1 | ,-> @keyframes foo { + 2 | `-> 10 { + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:2:5] + 2 | 10 { + : ^^ + `---- + + x Number { value: 10.0, raw: Atom('10' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:2:5] + 2 | 10 { + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:2:5] + 2 | 10 { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:2:5] + 2 | 10 { + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:2:5] + 2 | ,-> 10 { + 3 | | + 4 | `-> } + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:2:5] + 2 | ,-> 10 { + 3 | | + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:2:5] + 2 | ,-> 10 { + 3 | | + 4 | `-> } + `---- + + x WhiteSpace { value: Atom(' + | + | ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:2:5] + 2 | ,-> 10 { + 3 | | + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:4:5] + 4 | } + : ^ + 5 | } + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/keyframes/keyframe-number/input.css:4:5] + 4 | } + : ^ + 5 | } + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/layer/block/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/layer/block/span.rust-debug new file mode 100644 index 00000000000..68831851cf5 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/layer/block/span.rust-debug @@ -0,0 +1,172 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:1:1] + 1 | ,-> @layer framework, override , foo { + 2 | | .a { + 3 | | color: red; + 4 | | } + 5 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:1:1] + 1 | ,-> @layer framework, override , foo { + 2 | | .a { + 3 | | color: red; + 4 | | } + 5 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:1:1] + 1 | ,-> @layer framework, override , foo { + 2 | | .a { + 3 | | color: red; + 4 | | } + 5 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:1:1] + 1 | @layer framework, override , foo { + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:1:1] + 1 | @layer framework, override , foo { + : ^^^^^ + `---- + + x LayerPrelude + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:1:1] + 1 | @layer framework, override , foo { + : ^^^ + `---- + + x LayerName + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:1:1] + 1 | @layer framework, override , foo { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:1:1] + 1 | @layer framework, override , foo { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:1:1] + 1 | ,-> @layer framework, override , foo { + 2 | | .a { + 3 | | color: red; + 4 | | } + 5 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:2:5] + 2 | ,-> .a { + 3 | | color: red; + 4 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:2:5] + 2 | ,-> .a { + 3 | | color: red; + 4 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:2:5] + 2 | ,-> .a { + 3 | | color: red; + 4 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:2:5] + 2 | .a { + : ^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:2:5] + 2 | .a { + : ^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:2:5] + 2 | .a { + : ^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:2:5] + 2 | .a { + : ^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:2:5] + 2 | .a { + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:2:5] + 2 | .a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:2:5] + 2 | ,-> .a { + 3 | | color: red; + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:3:9] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:3:9] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:3:9] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:3:9] + 3 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:3:9] + 3 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:3:9] + 3 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/block/input.css:3:9] + 3 | color: red; + : ^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/layer/empty/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/layer/empty/span.rust-debug new file mode 100644 index 00000000000..ed392fd4d7d --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/layer/empty/span.rust-debug @@ -0,0 +1,42 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/layer/empty/input.css:1:1] + 1 | @layer ; + : ^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/layer/empty/input.css:1:1] + 1 | @layer ; + : ^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/layer/empty/input.css:1:1] + 1 | @layer ; + : ^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/layer/empty/input.css:1:1] + 1 | @layer ; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/empty/input.css:1:1] + 1 | @layer ; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/empty/input.css:1:1] + 1 | @layer ; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/layer/empty/input.css:1:1] + 1 | @layer ; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/layer/string-name-block/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/layer/string-name-block/span.rust-debug new file mode 100644 index 00000000000..2e8a1a0a5d4 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/layer/string-name-block/span.rust-debug @@ -0,0 +1,558 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:1:1] + 1 | ,-> @layer "framework" { + 2 | | h1, h2 { color: maroon; background: white;} + 3 | | + 4 | | @media (prefers-color-scheme: dark) { + 5 | | h1, h2 { color: red; background: black; } + 6 | | } + 7 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:1:1] + 1 | ,-> @layer "framework" { + 2 | | h1, h2 { color: maroon; background: white;} + 3 | | + 4 | | @media (prefers-color-scheme: dark) { + 5 | | h1, h2 { color: red; background: black; } + 6 | | } + 7 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:1:1] + 1 | ,-> @layer "framework" { + 2 | | h1, h2 { color: maroon; background: white;} + 3 | | + 4 | | @media (prefers-color-scheme: dark) { + 5 | | h1, h2 { color: red; background: black; } + 6 | | } + 7 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:1:1] + 1 | @layer "framework" { + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:1:1] + 1 | @layer "framework" { + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:1:1] + 1 | @layer "framework" { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:1:1] + 1 | @layer "framework" { + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:1:1] + 1 | @layer "framework" { + : ^^^^^^^^^^^ + `---- + + x String { value: Atom('framework' type=dynamic), raw: Atom('"framework"' type=dynamic) } + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:1:1] + 1 | @layer "framework" { + : ^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:1:1] + 1 | ,-> @layer "framework" { + 2 | | h1, h2 { color: maroon; background: white;} + 3 | | + 4 | | @media (prefers-color-scheme: dark) { + 5 | | h1, h2 { color: red; background: black; } + 6 | | } + 7 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:2:5] + 2 | h1, h2 { color: maroon; background: white;} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:4:5] + 4 | ,-> @media (prefers-color-scheme: dark) { + 5 | | h1, h2 { color: red; background: black; } + 6 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:4:5] + 4 | ,-> @media (prefers-color-scheme: dark) { + 5 | | h1, h2 { color: red; background: black; } + 6 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:4:5] + 4 | ,-> @media (prefers-color-scheme: dark) { + 5 | | h1, h2 { color: red; background: black; } + 6 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:4:5] + 4 | @media (prefers-color-scheme: dark) { + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:4:5] + 4 | @media (prefers-color-scheme: dark) { + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:4:5] + 4 | @media (prefers-color-scheme: dark) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:4:5] + 4 | @media (prefers-color-scheme: dark) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaCondition + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:4:5] + 4 | @media (prefers-color-scheme: dark) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionAllType + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:4:5] + 4 | @media (prefers-color-scheme: dark) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:4:5] + 4 | @media (prefers-color-scheme: dark) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:4:5] + 4 | @media (prefers-color-scheme: dark) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:4:5] + 4 | @media (prefers-color-scheme: dark) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:4:5] + 4 | @media (prefers-color-scheme: dark) { + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:4:5] + 4 | @media (prefers-color-scheme: dark) { + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:4:5] + 4 | @media (prefers-color-scheme: dark) { + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:4:5] + 4 | @media (prefers-color-scheme: dark) { + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:4:5] + 4 | ,-> @media (prefers-color-scheme: dark) { + 5 | | h1, h2 { color: red; background: black; } + 6 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/string-name-block/input.css:5:9] + 5 | h1, h2 { color: red; background: black; } + : ^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/layer/string-name-statement/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/layer/string-name-statement/span.rust-debug new file mode 100644 index 00000000000..eea290bb3bb --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/layer/string-name-statement/span.rust-debug @@ -0,0 +1,54 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/layer/string-name-statement/input.css:1:1] + 1 | @layer "default"; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/layer/string-name-statement/input.css:1:1] + 1 | @layer "default"; + : ^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/layer/string-name-statement/input.css:1:1] + 1 | @layer "default"; + : ^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/layer/string-name-statement/input.css:1:1] + 1 | @layer "default"; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/layer/string-name-statement/input.css:1:1] + 1 | @layer "default"; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/string-name-statement/input.css:1:1] + 1 | @layer "default"; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/layer/string-name-statement/input.css:1:1] + 1 | @layer "default"; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/layer/string-name-statement/input.css:1:1] + 1 | @layer "default"; + : ^^^^^^^^^ + `---- + + x String { value: Atom('default' type=static), raw: Atom('"default"' type=dynamic) } + ,-[$DIR/tests/recovery/at-rule/layer/string-name-statement/input.css:1:1] + 1 | @layer "default"; + : ^^^^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/condition-1/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/condition-1/span.rust-debug new file mode 100644 index 00000000000..6acee8d3151 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/condition-1/span.rust-debug @@ -0,0 +1,102 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/condition-1/input.css:1:1] + 1 | @media (update: slow) and (hover: none) unknown (color: 1) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/condition-1/input.css:1:1] + 1 | @media (update: slow) and (hover: none) unknown (color: 1) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/condition-1/input.css:1:1] + 1 | @media (update: slow) and (hover: none) unknown (color: 1) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/condition-1/input.css:1:1] + 1 | @media (update: slow) and (hover: none) unknown (color: 1) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/condition-1/input.css:1:1] + 1 | @media (update: slow) and (hover: none) unknown (color: 1) {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/at-rule/media/condition-1/input.css:1:1] + 1 | @media (update: slow) and (hover: none) unknown (color: 1) {} + : ^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/at-rule/media/condition-1/input.css:1:1] + 1 | @media (update: slow) and (hover: none) unknown (color: 1) {} + : ^^^^^^^^^^ + `---- + + x MediaCondition + ,-[$DIR/tests/recovery/at-rule/media/condition-1/input.css:1:1] + 1 | @media (update: slow) and (hover: none) unknown (color: 1) {} + : ^^^^^^^^^^ + `---- + + x MediaConditionAllType + ,-[$DIR/tests/recovery/at-rule/media/condition-1/input.css:1:1] + 1 | @media (update: slow) and (hover: none) unknown (color: 1) {} + : ^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/at-rule/media/condition-1/input.css:1:1] + 1 | @media (update: slow) and (hover: none) unknown (color: 1) {} + : ^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/at-rule/media/condition-1/input.css:1:1] + 1 | @media (update: slow) and (hover: none) unknown (color: 1) {} + : ^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/at-rule/media/condition-1/input.css:1:1] + 1 | @media (update: slow) and (hover: none) unknown (color: 1) {} + : ^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/at-rule/media/condition-1/input.css:1:1] + 1 | @media (update: slow) and (hover: none) unknown (color: 1) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/condition-1/input.css:1:1] + 1 | @media (update: slow) and (hover: none) unknown (color: 1) {} + : ^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/at-rule/media/condition-1/input.css:1:1] + 1 | @media (update: slow) and (hover: none) unknown (color: 1) {} + : ^ + `---- + + x Number + ,-[$DIR/tests/recovery/at-rule/media/condition-1/input.css:1:1] + 1 | @media (update: slow) and (hover: none) unknown (color: 1) {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/condition-1/input.css:1:1] + 1 | @media (update: slow) and (hover: none) unknown (color: 1) {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/condition-and-or/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/condition-and-or/span.rust-debug new file mode 100644 index 00000000000..019d8a5069e --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/condition-and-or/span.rust-debug @@ -0,0 +1,120 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaCondition + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionAllType + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/condition-and-or/input.css:1:1] + 1 | @media screen and (min-width: 900px) or (min-width: 1200px) {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/condition/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/condition/span.rust-debug new file mode 100644 index 00000000000..fd96c27e9c4 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/condition/span.rust-debug @@ -0,0 +1,102 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/condition/input.css:1:1] + 1 | @media (update: slow) unknown (hover: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/condition/input.css:1:1] + 1 | @media (update: slow) unknown (hover: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/condition/input.css:1:1] + 1 | @media (update: slow) unknown (hover: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/condition/input.css:1:1] + 1 | @media (update: slow) unknown (hover: none) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/condition/input.css:1:1] + 1 | @media (update: slow) unknown (hover: none) {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/at-rule/media/condition/input.css:1:1] + 1 | @media (update: slow) unknown (hover: none) {} + : ^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/at-rule/media/condition/input.css:1:1] + 1 | @media (update: slow) unknown (hover: none) {} + : ^^^^^^^^^^^^^ + `---- + + x MediaCondition + ,-[$DIR/tests/recovery/at-rule/media/condition/input.css:1:1] + 1 | @media (update: slow) unknown (hover: none) {} + : ^^^^^^^^^^^^^ + `---- + + x MediaConditionAllType + ,-[$DIR/tests/recovery/at-rule/media/condition/input.css:1:1] + 1 | @media (update: slow) unknown (hover: none) {} + : ^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/at-rule/media/condition/input.css:1:1] + 1 | @media (update: slow) unknown (hover: none) {} + : ^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/at-rule/media/condition/input.css:1:1] + 1 | @media (update: slow) unknown (hover: none) {} + : ^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/at-rule/media/condition/input.css:1:1] + 1 | @media (update: slow) unknown (hover: none) {} + : ^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/at-rule/media/condition/input.css:1:1] + 1 | @media (update: slow) unknown (hover: none) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/condition/input.css:1:1] + 1 | @media (update: slow) unknown (hover: none) {} + : ^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/at-rule/media/condition/input.css:1:1] + 1 | @media (update: slow) unknown (hover: none) {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/condition/input.css:1:1] + 1 | @media (update: slow) unknown (hover: none) {} + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/condition/input.css:1:1] + 1 | @media (update: slow) unknown (hover: none) {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/feature-name-1/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-name-1/span.rust-debug new file mode 100644 index 00000000000..5088784a889 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-name-1/span.rust-debug @@ -0,0 +1,108 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^^^^ + `---- + + x Dimension { value: 20.0, raw_value: Atom('20' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^^^^ + `---- + + x Dimension { value: 20.0, raw_value: Atom('20' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-name-1/input.css:1:1] + 1 | @media (20px: 20px) {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/feature-name-2/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-name-2/span.rust-debug new file mode 100644 index 00000000000..b0d914ab8a1 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-name-2/span.rust-debug @@ -0,0 +1,72 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/feature-name-2/input.css:1:1] + 1 | @media ("string") {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/feature-name-2/input.css:1:1] + 1 | @media ("string") {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/feature-name-2/input.css:1:1] + 1 | @media ("string") {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/feature-name-2/input.css:1:1] + 1 | @media ("string") {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/feature-name-2/input.css:1:1] + 1 | @media ("string") {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-name-2/input.css:1:1] + 1 | @media ("string") {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-name-2/input.css:1:1] + 1 | @media ("string") {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-name-2/input.css:1:1] + 1 | @media ("string") {} + : ^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-name-2/input.css:1:1] + 1 | @media ("string") {} + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-name-2/input.css:1:1] + 1 | @media ("string") {} + : ^^^^^^^^ + `---- + + x String { value: Atom('string' type=static), raw: Atom('"string"' type=dynamic) } + ,-[$DIR/tests/recovery/at-rule/media/feature-name-2/input.css:1:1] + 1 | @media ("string") {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-name-2/input.css:1:1] + 1 | @media ("string") {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/feature-name/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-name/span.rust-debug new file mode 100644 index 00000000000..d3dcbb3e082 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-name/span.rust-debug @@ -0,0 +1,108 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^^^^^^^^^^^ + `---- + + x String { value: Atom('min-width' type=dynamic), raw: Atom('"min-width"' type=dynamic) } + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^^^^ + `---- + + x Dimension { value: 20.0, raw_value: Atom('20' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-name/input.css:1:1] + 1 | @media ("min-width": 20px) {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-1/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-1/span.rust-debug new file mode 100644 index 00000000000..75a020d2b63 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-1/span.rust-debug @@ -0,0 +1,132 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^^^^^^ + `---- + + x Ident { value: Atom('height' type=inline), raw: Atom('height' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^ + `---- + + x Delim { value: '<' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^ + `---- + + x Delim { value: '<' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^^^^^ + `---- + + x Dimension { value: 600.0, raw_value: Atom('600' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-range-1/input.css:1:1] + 1 | @media (height << 600px) {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-2/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-2/span.rust-debug new file mode 100644 index 00000000000..0eec7440de2 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-2/span.rust-debug @@ -0,0 +1,168 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^^^^^ + `---- + + x Dimension { value: 400.0, raw_value: Atom('400' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^ + `---- + + x Delim { value: '>' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^^^^^^^ + `---- + + x String { value: Atom('width' type=inline), raw: Atom('"width"' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^ + `---- + + x Delim { value: '>' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^^^^^ + `---- + + x Dimension { value: 700.0, raw_value: Atom('700' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-range-2/input.css:1:1] + 1 | @media (400px > "width" > 700px) {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-3/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-3/span.rust-debug new file mode 100644 index 00000000000..88ddddefed4 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-3/span.rust-debug @@ -0,0 +1,216 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^^^^^ + `---- + + x Dimension { value: 400.0, raw_value: Atom('400' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x Delim { value: '>' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^^^^^ + `---- + + x Ident { value: Atom('width' type=inline), raw: Atom('width' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x Delim { value: '>' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^^^^^ + `---- + + x Dimension { value: 700.0, raw_value: Atom('700' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-range-3/input.css:1:1] + 1 | @media (400px > = width > = 700px) {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-4/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-4/span.rust-debug new file mode 100644 index 00000000000..e259b744311 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-4/span.rust-debug @@ -0,0 +1,180 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^^^^^ + `---- + + x Dimension { value: 400.0, raw_value: Atom('400' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^ + `---- + + x Delim { value: '>' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^^^^^ + `---- + + x Ident { value: Atom('width' type=inline), raw: Atom('width' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^ + `---- + + x Delim { value: '!' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^^^^^ + `---- + + x Dimension { value: 700.0, raw_value: Atom('700' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-range-4/input.css:1:1] + 1 | @media (400px >= width ! 700px) {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-5/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-5/span.rust-debug new file mode 100644 index 00000000000..1a065980c23 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-5/span.rust-debug @@ -0,0 +1,192 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^^^^^ + `---- + + x Dimension { value: 400.0, raw_value: Atom('400' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x Delim { value: '<' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^^^^^ + `---- + + x Ident { value: Atom('width' type=inline), raw: Atom('width' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x Delim { value: '>' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^^^^^ + `---- + + x Dimension { value: 700.0, raw_value: Atom('700' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-range-5/input.css:1:1] + 1 | @media (400px <= width >= 700px) {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-6/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-6/span.rust-debug new file mode 100644 index 00000000000..02780209531 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range-6/span.rust-debug @@ -0,0 +1,192 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^^^^^ + `---- + + x Dimension { value: 400.0, raw_value: Atom('400' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x Delim { value: '>' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^^^^^ + `---- + + x Ident { value: Atom('width' type=inline), raw: Atom('width' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x Delim { value: '<' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^^^^^ + `---- + + x Dimension { value: 700.0, raw_value: Atom('700' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-range-6/input.css:1:1] + 1 | @media (400px >= width <= 700px) {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range/span.rust-debug new file mode 100644 index 00000000000..14cf5ea9a5c --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-range/span.rust-debug @@ -0,0 +1,120 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^^^^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^^^^^^ + `---- + + x Ident { value: Atom('height' type=inline), raw: Atom('height' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^ + `---- + + x Delim { value: '+' } + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^^^^^ + `---- + + x Dimension { value: 600.0, raw_value: Atom('600' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-range/input.css:1:1] + 1 | @media (height + 600px) {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/feature-value-missing/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-value-missing/span.rust-debug new file mode 100644 index 00000000000..0f7e840290c --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/feature-value-missing/span.rust-debug @@ -0,0 +1,144 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^^^^^^ + `---- + + x Ident { value: Atom('screen' type=inline), raw: Atom('screen' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^^^ + `---- + + x Ident { value: Atom('and' type=static), raw: Atom('and' type=static) } + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^^^^^^^^^ + `---- + + x Ident { value: Atom('min-width' type=dynamic), raw: Atom('min-width' type=dynamic) } + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature-value-missing/input.css:1:1] + 1 | @media screen and (min-width: ) {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/feature/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/feature/span.rust-debug new file mode 100644 index 00000000000..748fc658219 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/feature/span.rust-debug @@ -0,0 +1,84 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/feature/input.css:1:1] + 1 | @media screen and {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/feature/input.css:1:1] + 1 | @media screen and {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/feature/input.css:1:1] + 1 | @media screen and {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/feature/input.css:1:1] + 1 | @media screen and {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/feature/input.css:1:1] + 1 | @media screen and {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature/input.css:1:1] + 1 | @media screen and {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature/input.css:1:1] + 1 | @media screen and {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature/input.css:1:1] + 1 | @media screen and {} + : ^^^^^^ + `---- + + x Ident { value: Atom('screen' type=inline), raw: Atom('screen' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature/input.css:1:1] + 1 | @media screen and {} + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature/input.css:1:1] + 1 | @media screen and {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/feature/input.css:1:1] + 1 | @media screen and {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/feature/input.css:1:1] + 1 | @media screen and {} + : ^^^ + `---- + + x Ident { value: Atom('and' type=static), raw: Atom('and' type=static) } + ,-[$DIR/tests/recovery/at-rule/media/feature/input.css:1:1] + 1 | @media screen and {} + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/feature/input.css:1:1] + 1 | @media screen and {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/invalid-nesting/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/invalid-nesting/span.rust-debug new file mode 100644 index 00000000000..39f16b107e5 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/invalid-nesting/span.rust-debug @@ -0,0 +1,172 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | ,-> @media (min-width: 480px) { + 2 | | max-inline-size: 1024px; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | ,-> @media (min-width: 480px) { + 2 | | max-inline-size: 1024px; + 3 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | ,-> @media (min-width: 480px) { + 2 | | max-inline-size: 1024px; + 3 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | @media (min-width: 480px) { + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | @media (min-width: 480px) { + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | @media (min-width: 480px) { + : ^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | @media (min-width: 480px) { + : ^^^^^^^^^^^^^^^^^^ + `---- + + x MediaCondition + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | @media (min-width: 480px) { + : ^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionAllType + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | @media (min-width: 480px) { + : ^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | @media (min-width: 480px) { + : ^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | @media (min-width: 480px) { + : ^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | @media (min-width: 480px) { + : ^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | @media (min-width: 480px) { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | @media (min-width: 480px) { + : ^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | @media (min-width: 480px) { + : ^^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | @media (min-width: 480px) { + : ^^^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | @media (min-width: 480px) { + : ^^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | @media (min-width: 480px) { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | @media (min-width: 480px) { + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:1:1] + 1 | ,-> @media (min-width: 480px) { + 2 | | max-inline-size: 1024px; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:2:5] + 2 | max-inline-size: 1024px; + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:2:5] + 2 | max-inline-size: 1024px; + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:2:5] + 2 | max-inline-size: 1024px; + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident { value: Atom('max-inline-size' type=dynamic), raw: Atom('max-inline-size' type=dynamic) } + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:2:5] + 2 | max-inline-size: 1024px; + : ^^^^^^^^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:2:5] + 2 | max-inline-size: 1024px; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:2:5] + 2 | max-inline-size: 1024px; + : ^ + `---- + + x Dimension { value: 1024.0, raw_value: Atom('1024' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:2:5] + 2 | max-inline-size: 1024px; + : ^^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/at-rule/media/invalid-nesting/input.css:2:5] + 2 | max-inline-size: 1024px; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/ratio/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/ratio/span.rust-debug new file mode 100644 index 00000000000..75b9227ce4a --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/ratio/span.rust-debug @@ -0,0 +1,120 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^^^^^^^^^^^^ + `---- + + x Ident { value: Atom('aspect-ratio' type=dynamic), raw: Atom('aspect-ratio' type=dynamic) } + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^^ + `---- + + x Number { value: 12.0, raw: Atom('12' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/ratio/input.css:1:1] + 1 | @media (aspect-ratio: 12/) {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/media/wrong-stylesheet/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/media/wrong-stylesheet/span.rust-debug new file mode 100644 index 00000000000..8171d93ba70 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/media/wrong-stylesheet/span.rust-debug @@ -0,0 +1,230 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:1:1] + 1 | ,-> @media print { + 2 | | color: teal; + 3 | | main { + 4 | | color: orange; + 5 | | } + 6 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:1:1] + 1 | ,-> @media print { + 2 | | color: teal; + 3 | | main { + 4 | | color: orange; + 5 | | } + 6 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:1:1] + 1 | ,-> @media print { + 2 | | color: teal; + 3 | | main { + 4 | | color: orange; + 5 | | } + 6 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:1:1] + 1 | @media print { + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:1:1] + 1 | @media print { + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:1:1] + 1 | @media print { + : ^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:1:1] + 1 | @media print { + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:1:1] + 1 | @media print { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:1:1] + 1 | ,-> @media print { + 2 | | color: teal; + 3 | | main { + 4 | | color: orange; + 5 | | } + 6 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:2:5] + 2 | color: teal; + : ^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:2:5] + 2 | color: teal; + : ^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:2:5] + 2 | color: teal; + : ^^^^^^^^^^^^ + `---- + + x Ident { value: Atom('color' type=inline), raw: Atom('color' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:2:5] + 2 | color: teal; + : ^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:2:5] + 2 | color: teal; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:2:5] + 2 | color: teal; + : ^ + `---- + + x Ident { value: Atom('teal' type=inline), raw: Atom('teal' type=inline) } + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:2:5] + 2 | color: teal; + : ^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:2:5] + 2 | color: teal; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:3:5] + 3 | ,-> main { + 4 | | color: orange; + 5 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:3:5] + 3 | ,-> main { + 4 | | color: orange; + 5 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:3:5] + 3 | ,-> main { + 4 | | color: orange; + 5 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:3:5] + 3 | main { + : ^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:3:5] + 3 | main { + : ^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:3:5] + 3 | main { + : ^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:3:5] + 3 | main { + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:3:5] + 3 | main { + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:3:5] + 3 | main { + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:3:5] + 3 | main { + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:3:5] + 3 | ,-> main { + 4 | | color: orange; + 5 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:4:9] + 4 | color: orange; + : ^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:4:9] + 4 | color: orange; + : ^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:4:9] + 4 | color: orange; + : ^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:4:9] + 4 | color: orange; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:4:9] + 4 | color: orange; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:4:9] + 4 | color: orange; + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/media/wrong-stylesheet/input.css:4:9] + 4 | color: orange; + : ^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/no-semi/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/no-semi/span.rust-debug new file mode 100644 index 00000000000..e8914047171 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/no-semi/span.rust-debug @@ -0,0 +1,168 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | ,-> @media screen {@content} + 2 | | + 3 | `-> @charset "UTF-8" + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | ,-> @media screen {@content} + 2 | | + 3 | `-> @charset "UTF-8" + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | ,-> @media screen {@content} + 2 | | + 3 | `-> @charset "UTF-8" + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | @media screen {@content} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | @media screen {@content} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | @media screen {@content} + : ^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | @media screen {@content} + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | @media screen {@content} + : ^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | ,-> @media screen {@content} + 2 | | + 3 | `-> @charset "UTF-8" + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | ,-> @media screen {@content} + 2 | | + 3 | `-> @charset "UTF-8" + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | ,-> @media screen {@content} + 2 | | + 3 | `-> @charset "UTF-8" + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | ,-> @media screen {@content} + 2 | | + 3 | `-> @charset "UTF-8" + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | @media screen {@content} + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | @media screen {@content} + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | @media screen {@content} + : ^ + `---- + + x RBrace + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | @media screen {@content} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | ,-> @media screen {@content} + 2 | `-> + 3 | @charset "UTF-8" + `---- + + x WhiteSpace { value: Atom(' + | + | ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:1:1] + 1 | ,-> @media screen {@content} + 2 | `-> + 3 | @charset "UTF-8" + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:3:1] + 3 | @charset "UTF-8" + : ^^^^^^^^ + `---- + + x AtKeyword { value: Atom('charset' type=inline), raw: Atom('charset' type=inline) } + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:3:1] + 3 | @charset "UTF-8" + : ^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:3:1] + 3 | @charset "UTF-8" + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:3:1] + 3 | @charset "UTF-8" + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:3:1] + 3 | @charset "UTF-8" + : ^^^^^^^ + `---- + + x String { value: Atom('UTF-8' type=inline), raw: Atom('"UTF-8"' type=inline) } + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:3:1] + 3 | @charset "UTF-8" + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:3:1] + 3 | @charset "UTF-8" + : ^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/no-semi/input.css:3:1] + 3 | @charset "UTF-8" + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/page/invalid-nesting/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/page/invalid-nesting/span.rust-debug new file mode 100644 index 00000000000..7c5a5ce199e --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/page/invalid-nesting/span.rust-debug @@ -0,0 +1,472 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:1:1] + 1 | ,-> @page :first { + 2 | | color: green; + 3 | | + 4 | | @top-left { + 5 | | content: "foo"; + 6 | | color: blue; + 7 | | } + 8 | | + 9 | | @top-right { + 10 | | @top-right { + 11 | | content: "zzz"; + 12 | | } + 13 | | + 14 | | content: "bar"; + 15 | | } + 16 | | + 17 | | margin: 20px; + 18 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:1:1] + 1 | ,-> @page :first { + 2 | | color: green; + 3 | | + 4 | | @top-left { + 5 | | content: "foo"; + 6 | | color: blue; + 7 | | } + 8 | | + 9 | | @top-right { + 10 | | @top-right { + 11 | | content: "zzz"; + 12 | | } + 13 | | + 14 | | content: "bar"; + 15 | | } + 16 | | + 17 | | margin: 20px; + 18 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:1:1] + 1 | ,-> @page :first { + 2 | | color: green; + 3 | | + 4 | | @top-left { + 5 | | content: "foo"; + 6 | | color: blue; + 7 | | } + 8 | | + 9 | | @top-right { + 10 | | @top-right { + 11 | | content: "zzz"; + 12 | | } + 13 | | + 14 | | content: "bar"; + 15 | | } + 16 | | + 17 | | margin: 20px; + 18 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:1:1] + 1 | @page :first { + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:1:1] + 1 | @page :first { + : ^^^^ + `---- + + x PageSelectorList + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:1:1] + 1 | @page :first { + : ^^^^^^ + `---- + + x PageSelector + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:1:1] + 1 | @page :first { + : ^^^^^^ + `---- + + x PageSelectorPseudo + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:1:1] + 1 | @page :first { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:1:1] + 1 | @page :first { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:1:1] + 1 | ,-> @page :first { + 2 | | color: green; + 3 | | + 4 | | @top-left { + 5 | | content: "foo"; + 6 | | color: blue; + 7 | | } + 8 | | + 9 | | @top-right { + 10 | | @top-right { + 11 | | content: "zzz"; + 12 | | } + 13 | | + 14 | | content: "bar"; + 15 | | } + 16 | | + 17 | | margin: 20px; + 18 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:2:5] + 2 | color: green; + : ^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:2:5] + 2 | color: green; + : ^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:2:5] + 2 | color: green; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:2:5] + 2 | color: green; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:2:5] + 2 | color: green; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:2:5] + 2 | color: green; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:4:5] + 4 | ,-> @top-left { + 5 | | content: "foo"; + 6 | | color: blue; + 7 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:4:5] + 4 | ,-> @top-left { + 5 | | content: "foo"; + 6 | | color: blue; + 7 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:4:5] + 4 | @top-left { + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:4:5] + 4 | @top-left { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:4:5] + 4 | ,-> @top-left { + 5 | | content: "foo"; + 6 | | color: blue; + 7 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:5:9] + 5 | content: "foo"; + : ^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:5:9] + 5 | content: "foo"; + : ^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:5:9] + 5 | content: "foo"; + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:5:9] + 5 | content: "foo"; + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:5:9] + 5 | content: "foo"; + : ^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:5:9] + 5 | content: "foo"; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:6:9] + 6 | color: blue; + : ^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:6:9] + 6 | color: blue; + : ^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:6:9] + 6 | color: blue; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:6:9] + 6 | color: blue; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:6:9] + 6 | color: blue; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:6:9] + 6 | color: blue; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:9:5] + 9 | ,-> @top-right { + 10 | | @top-right { + 11 | | content: "zzz"; + 12 | | } + 13 | | + 14 | | content: "bar"; + 15 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:9:5] + 9 | ,-> @top-right { + 10 | | @top-right { + 11 | | content: "zzz"; + 12 | | } + 13 | | + 14 | | content: "bar"; + 15 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:9:5] + 9 | @top-right { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:9:5] + 9 | @top-right { + : ^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:9:5] + 9 | ,-> @top-right { + 10 | | @top-right { + 11 | | content: "zzz"; + 12 | | } + 13 | | + 14 | | content: "bar"; + 15 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:10:9] + 10 | ,-> @top-right { + 11 | | content: "zzz"; + 12 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:10:9] + 10 | ,-> @top-right { + 11 | | content: "zzz"; + 12 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:10:9] + 10 | @top-right { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:10:9] + 10 | @top-right { + : ^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:10:9] + 10 | ,-> @top-right { + 11 | | content: "zzz"; + 12 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:11:13] + 11 | content: "zzz"; + : ^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:11:13] + 11 | content: "zzz"; + : ^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:11:13] + 11 | content: "zzz"; + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:11:13] + 11 | content: "zzz"; + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:11:13] + 11 | content: "zzz"; + : ^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:11:13] + 11 | content: "zzz"; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:14:9] + 14 | content: "bar"; + : ^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:14:9] + 14 | content: "bar"; + : ^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:14:9] + 14 | content: "bar"; + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:14:9] + 14 | content: "bar"; + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:14:9] + 14 | content: "bar"; + : ^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:14:9] + 14 | content: "bar"; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:17:5] + 17 | margin: 20px; + : ^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:17:5] + 17 | margin: 20px; + : ^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:17:5] + 17 | margin: 20px; + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:17:5] + 17 | margin: 20px; + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:17:5] + 17 | margin: 20px; + : ^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:17:5] + 17 | margin: 20px; + : ^^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:17:5] + 17 | margin: 20px; + : ^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:17:5] + 17 | margin: 20px; + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-nesting/input.css:17:5] + 17 | margin: 20px; + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/page/invalid-pseudo/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/page/invalid-pseudo/span.rust-debug new file mode 100644 index 00000000000..ad5520759a6 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/page/invalid-pseudo/span.rust-debug @@ -0,0 +1,118 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:1:1] + 1 | ,-> @page :unknown { + 2 | | margin: 2cm; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:1:1] + 1 | ,-> @page :unknown { + 2 | | margin: 2cm; + 3 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:1:1] + 1 | ,-> @page :unknown { + 2 | | margin: 2cm; + 3 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:1:1] + 1 | @page :unknown { + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:1:1] + 1 | @page :unknown { + : ^^^^ + `---- + + x PageSelectorList + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:1:1] + 1 | @page :unknown { + : ^^^^^^^ + `---- + + x PageSelector + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:1:1] + 1 | @page :unknown { + : ^^^^^^^ + `---- + + x PageSelectorType + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:1:1] + 1 | @page :unknown { + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:1:1] + 1 | @page :unknown { + : ^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:1:1] + 1 | ,-> @page :unknown { + 2 | | margin: 2cm; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:2:5] + 2 | margin: 2cm; + : ^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:2:5] + 2 | margin: 2cm; + : ^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:2:5] + 2 | margin: 2cm; + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:2:5] + 2 | margin: 2cm; + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:2:5] + 2 | margin: 2cm; + : ^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:2:5] + 2 | margin: 2cm; + : ^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:2:5] + 2 | margin: 2cm; + : ^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:2:5] + 2 | margin: 2cm; + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/invalid-pseudo/input.css:2:5] + 2 | margin: 2cm; + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/page/no-space/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/page/no-space/span.rust-debug new file mode 100644 index 00000000000..6c33c8afa39 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/page/no-space/span.rust-debug @@ -0,0 +1,188 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:1:1] + 1 | ,-> @page Page: blank { + 2 | | @top-center { content: none } + 3 | | margin-left: 4cm; + 4 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:1:1] + 1 | ,-> @page Page: blank { + 2 | | @top-center { content: none } + 3 | | margin-left: 4cm; + 4 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:1:1] + 1 | ,-> @page Page: blank { + 2 | | @top-center { content: none } + 3 | | margin-left: 4cm; + 4 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:1:1] + 1 | @page Page: blank { + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:1:1] + 1 | @page Page: blank { + : ^^^^ + `---- + + x PageSelectorList + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:1:1] + 1 | @page Page: blank { + : ^^^^^ + `---- + + x PageSelector + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:1:1] + 1 | @page Page: blank { + : ^^^^^ + `---- + + x PageSelectorType + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:1:1] + 1 | @page Page: blank { + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:1:1] + 1 | @page Page: blank { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:1:1] + 1 | ,-> @page Page: blank { + 2 | | @top-center { content: none } + 3 | | margin-left: 4cm; + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:2:5] + 2 | @top-center { content: none } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:2:5] + 2 | @top-center { content: none } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:2:5] + 2 | @top-center { content: none } + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:2:5] + 2 | @top-center { content: none } + : ^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:2:5] + 2 | @top-center { content: none } + : ^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:2:5] + 2 | @top-center { content: none } + : ^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:2:5] + 2 | @top-center { content: none } + : ^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:2:5] + 2 | @top-center { content: none } + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:2:5] + 2 | @top-center { content: none } + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:2:5] + 2 | @top-center { content: none } + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:2:5] + 2 | @top-center { content: none } + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:3:5] + 3 | margin-left: 4cm; + : ^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:3:5] + 3 | margin-left: 4cm; + : ^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:3:5] + 3 | margin-left: 4cm; + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:3:5] + 3 | margin-left: 4cm; + : ^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:3:5] + 3 | margin-left: 4cm; + : ^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:3:5] + 3 | margin-left: 4cm; + : ^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:3:5] + 3 | margin-left: 4cm; + : ^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:3:5] + 3 | margin-left: 4cm; + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/no-space/input.css:3:5] + 3 | margin-left: 4cm; + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/page/without-page/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/page/without-page/span.rust-debug new file mode 100644 index 00000000000..8ff2c67128f --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/page/without-page/span.rust-debug @@ -0,0 +1,128 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:1:1] + 1 | ,-> @top-left { + 2 | | content: "foo"; + 3 | | color: blue; + 4 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:1:1] + 1 | ,-> @top-left { + 2 | | content: "foo"; + 3 | | color: blue; + 4 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:1:1] + 1 | ,-> @top-left { + 2 | | content: "foo"; + 3 | | color: blue; + 4 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:1:1] + 1 | @top-left { + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:1:1] + 1 | @top-left { + : ^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:1:1] + 1 | @top-left { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:1:1] + 1 | @top-left { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:1:1] + 1 | ,-> @top-left { + 2 | | content: "foo"; + 3 | | color: blue; + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:2:5] + 2 | content: "foo"; + : ^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:2:5] + 2 | content: "foo"; + : ^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:2:5] + 2 | content: "foo"; + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:2:5] + 2 | content: "foo"; + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:2:5] + 2 | content: "foo"; + : ^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:2:5] + 2 | content: "foo"; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:3:5] + 3 | color: blue; + : ^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:3:5] + 3 | color: blue; + : ^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:3:5] + 3 | color: blue; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:3:5] + 3 | color: blue; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:3:5] + 3 | color: blue; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/page/without-page/input.css:3:5] + 3 | color: blue; + : ^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/supports/no-parens/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/supports/no-parens/span.rust-debug new file mode 100644 index 00000000000..c2f4cfc7b9f --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/supports/no-parens/span.rust-debug @@ -0,0 +1,108 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^^^^^^^ + `---- + + x Ident { value: Atom('display' type=inline), raw: Atom('display' type=inline) } + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^^^^ + `---- + + x Ident { value: Atom('flex' type=inline), raw: Atom('flex' type=inline) } + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/supports/no-parens/input.css:1:1] + 1 | @supports display: flex {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/supports/wrong-or-and/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/supports/wrong-or-and/span.rust-debug new file mode 100644 index 00000000000..08e5e5dfef5 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/supports/wrong-or-and/span.rust-debug @@ -0,0 +1,126 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^^^^ + `---- + + x SupportsCondition + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^ + `---- + + x Angle + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/at-rule/supports/wrong-or-and/input.css:1:1] + 1 | @supports (transition-property: color) or (animation-name: foo) and (transform: rotate(10deg)) {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/at-rule/unknown/span.rust-debug b/crates/swc_css_parser/tests/recovery/at-rule/unknown/span.rust-debug new file mode 100644 index 00000000000..b557883069a --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/at-rule/unknown/span.rust-debug @@ -0,0 +1,30 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/at-rule/unknown/input.css:1:1] + 1 | @import-normalize; + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/at-rule/unknown/input.css:1:1] + 1 | @import-normalize; + : ^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/at-rule/unknown/input.css:1:1] + 1 | @import-normalize; + : ^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/at-rule/unknown/input.css:1:1] + 1 | @import-normalize; + : ^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/at-rule/unknown/input.css:1:1] + 1 | @import-normalize; + : ^^^^^^^^^^^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/bad-url-token/double-quotes/span.rust-debug b/crates/swc_css_parser/tests/recovery/bad-url-token/double-quotes/span.rust-debug new file mode 100644 index 00000000000..edbd63b7774 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/bad-url-token/double-quotes/span.rust-debug @@ -0,0 +1,158 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image".png); + 3 | | color: red; + 4 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image".png); + 3 | | color: red; + 4 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image".png); + 3 | | color: red; + 4 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image".png); + 3 | | color: red; + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:2:5] + 2 | background: url(image".png); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:2:5] + 2 | background: url(image".png); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:2:5] + 2 | background: url(image".png); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:2:5] + 2 | background: url(image".png); + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:2:5] + 2 | background: url(image".png); + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:2:5] + 2 | background: url(image".png); + : ^^^^^^^^^^^^^^^ + `---- + + x BadUrl { name: Atom('url' type=static), raw_name: Atom('url' type=static), value: Atom('image".png' type=dynamic), raw_value: Atom('image".png' type=dynamic) } + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:2:5] + 2 | background: url(image".png); + : ^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:3:5] + 3 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:3:5] + 3 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:3:5] + 3 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/double-quotes/input.css:3:5] + 3 | color: red; + : ^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/bad-url-token/invalid-escape/span.rust-debug b/crates/swc_css_parser/tests/recovery/bad-url-token/invalid-escape/span.rust-debug new file mode 100644 index 00000000000..8bddfc13c87 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/bad-url-token/invalid-escape/span.rust-debug @@ -0,0 +1,118 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image.png\ + 3 | | ); + 4 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image.png\ + 3 | | ); + 4 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image.png\ + 3 | | ); + 4 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image.png\ + 3 | | ); + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:2:5] + 2 | ,-> background: url(image.png\ + 3 | `-> ); + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:2:5] + 2 | ,-> background: url(image.png\ + 3 | `-> ); + `---- + + x Declaration + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:2:5] + 2 | ,-> background: url(image.png\ + 3 | `-> ); + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:2:5] + 2 | background: url(image.png\ + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:2:5] + 2 | background: url(image.png\ + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:2:5] + 2 | ,-> background: url(image.png\ + 3 | `-> ); + `---- + + x BadUrl { name: Atom('url' type=static), raw_name: Atom('url' type=static), value: Atom('image.png\ + | ' type=dynamic), raw_value: Atom('image.png\ + | ' type=dynamic) } + ,-[$DIR/tests/recovery/bad-url-token/invalid-escape/input.css:2:5] + 2 | ,-> background: url(image.png\ + 3 | `-> ); + `---- diff --git a/crates/swc_css_parser/tests/recovery/bad-url-token/left-parenthesis/span.rust-debug b/crates/swc_css_parser/tests/recovery/bad-url-token/left-parenthesis/span.rust-debug new file mode 100644 index 00000000000..087b4d11402 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/bad-url-token/left-parenthesis/span.rust-debug @@ -0,0 +1,158 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image(.png); + 3 | | color: red; + 4 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image(.png); + 3 | | color: red; + 4 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image(.png); + 3 | | color: red; + 4 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image(.png); + 3 | | color: red; + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:2:5] + 2 | background: url(image(.png); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:2:5] + 2 | background: url(image(.png); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:2:5] + 2 | background: url(image(.png); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:2:5] + 2 | background: url(image(.png); + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:2:5] + 2 | background: url(image(.png); + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:2:5] + 2 | background: url(image(.png); + : ^^^^^^^^^^^^^^^ + `---- + + x BadUrl { name: Atom('url' type=static), raw_name: Atom('url' type=static), value: Atom('image(.png' type=dynamic), raw_value: Atom('image(.png' type=dynamic) } + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:2:5] + 2 | background: url(image(.png); + : ^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:3:5] + 3 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:3:5] + 3 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:3:5] + 3 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/left-parenthesis/input.css:3:5] + 3 | color: red; + : ^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/bad-url-token/single-quotes/span.rust-debug b/crates/swc_css_parser/tests/recovery/bad-url-token/single-quotes/span.rust-debug new file mode 100644 index 00000000000..c568405c278 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/bad-url-token/single-quotes/span.rust-debug @@ -0,0 +1,158 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image'.png); + 3 | | color: red; + 4 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image'.png); + 3 | | color: red; + 4 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image'.png); + 3 | | color: red; + 4 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image'.png); + 3 | | color: red; + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:2:5] + 2 | background: url(image'.png); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:2:5] + 2 | background: url(image'.png); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:2:5] + 2 | background: url(image'.png); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:2:5] + 2 | background: url(image'.png); + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:2:5] + 2 | background: url(image'.png); + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:2:5] + 2 | background: url(image'.png); + : ^^^^^^^^^^^^^^^ + `---- + + x BadUrl { name: Atom('url' type=static), raw_name: Atom('url' type=static), value: Atom('image'.png' type=dynamic), raw_value: Atom('image'.png' type=dynamic) } + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:2:5] + 2 | background: url(image'.png); + : ^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:3:5] + 3 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:3:5] + 3 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:3:5] + 3 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/single-quotes/input.css:3:5] + 3 | color: red; + : ^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/bad-url-token/whitespace-in-middle/span.rust-debug b/crates/swc_css_parser/tests/recovery/bad-url-token/whitespace-in-middle/span.rust-debug new file mode 100644 index 00000000000..d993be31f21 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/bad-url-token/whitespace-in-middle/span.rust-debug @@ -0,0 +1,112 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:1:1] + 1 | ,-> a { + 2 | | background-image: url( ./image.jpg a ); + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:1:1] + 1 | ,-> a { + 2 | | background-image: url( ./image.jpg a ); + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:1:1] + 1 | ,-> a { + 2 | | background-image: url( ./image.jpg a ); + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:1:1] + 1 | ,-> a { + 2 | | background-image: url( ./image.jpg a ); + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:2:5] + 2 | background-image: url( ./image.jpg a ); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:2:5] + 2 | background-image: url( ./image.jpg a ); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:2:5] + 2 | background-image: url( ./image.jpg a ); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:2:5] + 2 | background-image: url( ./image.jpg a ); + : ^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:2:5] + 2 | background-image: url( ./image.jpg a ); + : ^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:2:5] + 2 | background-image: url( ./image.jpg a ); + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x BadUrl { name: Atom('url' type=static), raw_name: Atom('url' type=static), value: Atom(' ./image.jpg a ' type=dynamic), raw_value: Atom(' ./image.jpg a ' type=dynamic) } + ,-[$DIR/tests/recovery/bad-url-token/whitespace-in-middle/input.css:2:5] + 2 | background-image: url( ./image.jpg a ); + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/bad-url-token/whitespace/span.rust-debug b/crates/swc_css_parser/tests/recovery/bad-url-token/whitespace/span.rust-debug new file mode 100644 index 00000000000..1c6e082eea6 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/bad-url-token/whitespace/span.rust-debug @@ -0,0 +1,164 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image. + 3 | | png); + 4 | | color: red; + 5 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image. + 3 | | png); + 4 | | color: red; + 5 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image. + 3 | | png); + 4 | | color: red; + 5 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:1:1] + 1 | ,-> div { + 2 | | background: url(image. + 3 | | png); + 4 | | color: red; + 5 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:2:5] + 2 | ,-> background: url(image. + 3 | `-> png); + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:2:5] + 2 | ,-> background: url(image. + 3 | `-> png); + `---- + + x Declaration + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:2:5] + 2 | ,-> background: url(image. + 3 | `-> png); + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:2:5] + 2 | background: url(image. + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:2:5] + 2 | background: url(image. + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:2:5] + 2 | ,-> background: url(image. + 3 | `-> png); + `---- + + x BadUrl { name: Atom('url' type=static), raw_name: Atom('url' type=static), value: Atom('image. + | png' type=dynamic), raw_value: Atom('image. + | png' type=dynamic) } + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:2:5] + 2 | ,-> background: url(image. + 3 | `-> png); + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:4:5] + 4 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:4:5] + 4 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:4:5] + 4 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/bad-url-token/whitespace/input.css:4:5] + 4 | color: red; + : ^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/cdo-and-cdc/span.rust-debug b/crates/swc_css_parser/tests/recovery/cdo-and-cdc/span.rust-debug new file mode 100644 index 00000000000..f9307bda119 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/cdo-and-cdc/span.rust-debug @@ -0,0 +1,216 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:1:1] + 1 | ,-> + 2 | | + 3 | | div { + 4 | | color: red; + 5 | | + 10 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:1:1] + 1 | ,-> + 2 | | + 3 | | div { + 4 | | color: red; + 5 | | + 10 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:1:1] + 1 | ,-> + 2 | | + 3 | | div { + 4 | | color: red; + 5 | | + 10 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:1:1] + 1 | ,-> + 2 | | + 3 | `-> div { + `---- + + x Number { value: 123.0, raw: Atom('123' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:1:1] + 1 | + : ^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:1:1] + 1 | + : ^ + `---- + + x CDC + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:1:1] + 1 | + : ^^^ + `---- + + x WhiteSpace { value: Atom(' + | + | ' type=inline) } + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:1:1] + 1 | ,-> + 2 | `-> + 3 | div { + `---- + + x Ident { value: Atom('div' type=inline), raw: Atom('div' type=inline) } + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:3:1] + 3 | div { + : ^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:3:1] + 3 | div { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:3:1] + 3 | ,-> div { + 4 | | color: red; + 5 | | + 10 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:4:5] + 4 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:4:5] + 4 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:4:5] + 4 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:4:5] + 4 | color: red; + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:5:1] + 5 | ,-> + 10 | } + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:5:1] + 5 | ,-> + 10 | } + `---- + + x Tokens + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:5:1] + 5 | ,-> + 10 | } + `---- + + x CDO + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:5:1] + 5 | + `---- + + x CDC + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:9:1] + 9 | --> + : ^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/cdo-and-cdc/input.css:9:1] + 9 | --> + : ^ + 10 | } + `---- diff --git a/crates/swc_css_parser/tests/recovery/comments/bad-comment-1/span.rust-debug b/crates/swc_css_parser/tests/recovery/comments/bad-comment-1/span.rust-debug new file mode 100644 index 00000000000..58b6c3b26d6 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/comments/bad-comment-1/span.rust-debug @@ -0,0 +1,42 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/comments/bad-comment-1/input.css:1:1] + 1 | // comment + : ^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/comments/bad-comment-1/input.css:1:1] + 1 | // comment + : ^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/comments/bad-comment-1/input.css:1:1] + 1 | // comment + : ^^^^^^^^^^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/recovery/comments/bad-comment-1/input.css:1:1] + 1 | // comment + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/recovery/comments/bad-comment-1/input.css:1:1] + 1 | // comment + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/comments/bad-comment-1/input.css:1:1] + 1 | // comment + : ^ + `---- + + x Ident { value: Atom('comment' type=inline), raw: Atom('comment' type=inline) } + ,-[$DIR/tests/recovery/comments/bad-comment-1/input.css:1:1] + 1 | // comment + : ^^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/comments/bad-comment-2/span.rust-debug b/crates/swc_css_parser/tests/recovery/comments/bad-comment-2/span.rust-debug new file mode 100644 index 00000000000..b2615067284 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/comments/bad-comment-2/span.rust-debug @@ -0,0 +1,6 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/comments/bad-comment-2/input.css:1:1] + 1 | /*! bad comment * + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/comments/bad-comment-3/span.rust-debug b/crates/swc_css_parser/tests/recovery/comments/bad-comment-3/span.rust-debug new file mode 100644 index 00000000000..e645707d2b9 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/comments/bad-comment-3/span.rust-debug @@ -0,0 +1,6 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/comments/bad-comment-3/input.css:1:1] + 1 | /*! bad comment + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/comments/declaration/span.rust-debug b/crates/swc_css_parser/tests/recovery/comments/declaration/span.rust-debug new file mode 100644 index 00000000000..33bc60751f1 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/comments/declaration/span.rust-debug @@ -0,0 +1,146 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/comments/declaration/input.css:1:1] + 1 | ,-> a { + 2 | | prop: url("test") /* comment */ /* comment */ + 3 | | /* comment */: + 4 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/comments/declaration/input.css:1:1] + 1 | ,-> a { + 2 | | prop: url("test") /* comment */ /* comment */ + 3 | | /* comment */: + 4 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/comments/declaration/input.css:1:1] + 1 | ,-> a { + 2 | | prop: url("test") /* comment */ /* comment */ + 3 | | /* comment */: + 4 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/comments/declaration/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/comments/declaration/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/comments/declaration/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/comments/declaration/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/comments/declaration/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/comments/declaration/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/comments/declaration/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/comments/declaration/input.css:1:1] + 1 | ,-> a { + 2 | | prop: url("test") /* comment */ /* comment */ + 3 | | /* comment */: + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/comments/declaration/input.css:2:5] + 2 | ,-> prop: url("test") /* comment */ /* comment */ + 3 | `-> /* comment */: + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/comments/declaration/input.css:2:5] + 2 | ,-> prop: url("test") /* comment */ /* comment */ + 3 | `-> /* comment */: + `---- + + x Declaration + ,-[$DIR/tests/recovery/comments/declaration/input.css:2:5] + 2 | ,-> prop: url("test") /* comment */ /* comment */ + 3 | `-> /* comment */: + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/comments/declaration/input.css:2:5] + 2 | prop: url("test") /* comment */ /* comment */ + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/comments/declaration/input.css:2:5] + 2 | prop: url("test") /* comment */ /* comment */ + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/comments/declaration/input.css:2:5] + 2 | prop: url("test") /* comment */ /* comment */ + : ^^^^^^^^^^^ + `---- + + x Url + ,-[$DIR/tests/recovery/comments/declaration/input.css:2:5] + 2 | prop: url("test") /* comment */ /* comment */ + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/comments/declaration/input.css:2:5] + 2 | prop: url("test") /* comment */ /* comment */ + : ^^^ + `---- + + x UrlValue + ,-[$DIR/tests/recovery/comments/declaration/input.css:2:5] + 2 | prop: url("test") /* comment */ /* comment */ + : ^^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/comments/declaration/input.css:2:5] + 2 | prop: url("test") /* comment */ /* comment */ + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/comments/declaration/input.css:3:9] + 3 | /* comment */: + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/comments/declaration/input.css:3:9] + 3 | /* comment */: + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/declaration/basic/span.rust-debug b/crates/swc_css_parser/tests/recovery/declaration/basic/span.rust-debug new file mode 100644 index 00000000000..6141d13bc9d --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/declaration/basic/span.rust-debug @@ -0,0 +1,444 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/declaration/basic/input.css:1:1] + 1 | ,-> .class { + 2 | | prop: ; + 3 | | color: red; + 4 | | } + 5 | | + 6 | | .class { + 7 | | prop: !!; + 8 | | color: red; + 9 | | } + 10 | | + 11 | | a { + 12 | | test; + 13 | | color: red; + 14 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/declaration/basic/input.css:1:1] + 1 | ,-> .class { + 2 | | prop: ; + 3 | | color: red; + 4 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/declaration/basic/input.css:1:1] + 1 | ,-> .class { + 2 | | prop: ; + 3 | | color: red; + 4 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/declaration/basic/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/declaration/basic/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/declaration/basic/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/declaration/basic/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/declaration/basic/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/declaration/basic/input.css:1:1] + 1 | .class { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/declaration/basic/input.css:1:1] + 1 | ,-> .class { + 2 | | prop: ; + 3 | | color: red; + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/declaration/basic/input.css:2:5] + 2 | prop: ; + : ^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/declaration/basic/input.css:2:5] + 2 | prop: ; + : ^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/declaration/basic/input.css:2:5] + 2 | prop: ; + : ^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/declaration/basic/input.css:2:5] + 2 | prop: ; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/declaration/basic/input.css:2:5] + 2 | prop: ; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/declaration/basic/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/declaration/basic/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/declaration/basic/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/declaration/basic/input.css:3:5] + 3 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/declaration/basic/input.css:3:5] + 3 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/declaration/basic/input.css:3:5] + 3 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/declaration/basic/input.css:3:5] + 3 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/declaration/basic/input.css:6:1] + 6 | ,-> .class { + 7 | | prop: !!; + 8 | | color: red; + 9 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/declaration/basic/input.css:6:1] + 6 | ,-> .class { + 7 | | prop: !!; + 8 | | color: red; + 9 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/declaration/basic/input.css:6:1] + 6 | .class { + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/declaration/basic/input.css:6:1] + 6 | .class { + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/declaration/basic/input.css:6:1] + 6 | .class { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/declaration/basic/input.css:6:1] + 6 | .class { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/declaration/basic/input.css:6:1] + 6 | .class { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/declaration/basic/input.css:6:1] + 6 | .class { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/declaration/basic/input.css:6:1] + 6 | ,-> .class { + 7 | | prop: !!; + 8 | | color: red; + 9 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/declaration/basic/input.css:7:5] + 7 | prop: !!; + : ^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/declaration/basic/input.css:7:5] + 7 | prop: !!; + : ^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/declaration/basic/input.css:7:5] + 7 | prop: !!; + : ^^^^^^^^^ + `---- + + x Ident { value: Atom('prop' type=inline), raw: Atom('prop' type=inline) } + ,-[$DIR/tests/recovery/declaration/basic/input.css:7:5] + 7 | prop: !!; + : ^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/declaration/basic/input.css:7:5] + 7 | prop: !!; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/declaration/basic/input.css:7:5] + 7 | prop: !!; + : ^ + `---- + + x Delim { value: '!' } + ,-[$DIR/tests/recovery/declaration/basic/input.css:7:5] + 7 | prop: !!; + : ^ + `---- + + x Delim { value: '!' } + ,-[$DIR/tests/recovery/declaration/basic/input.css:7:5] + 7 | prop: !!; + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/declaration/basic/input.css:7:5] + 7 | prop: !!; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/declaration/basic/input.css:8:5] + 8 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/declaration/basic/input.css:8:5] + 8 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/declaration/basic/input.css:8:5] + 8 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/declaration/basic/input.css:8:5] + 8 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/declaration/basic/input.css:8:5] + 8 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/declaration/basic/input.css:8:5] + 8 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/declaration/basic/input.css:8:5] + 8 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/declaration/basic/input.css:11:1] + 11 | ,-> a { + 12 | | test; + 13 | | color: red; + 14 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/declaration/basic/input.css:11:1] + 11 | ,-> a { + 12 | | test; + 13 | | color: red; + 14 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/declaration/basic/input.css:11:1] + 11 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/declaration/basic/input.css:11:1] + 11 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/declaration/basic/input.css:11:1] + 11 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/declaration/basic/input.css:11:1] + 11 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/declaration/basic/input.css:11:1] + 11 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/declaration/basic/input.css:11:1] + 11 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/declaration/basic/input.css:11:1] + 11 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/declaration/basic/input.css:11:1] + 11 | ,-> a { + 12 | | test; + 13 | | color: red; + 14 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/declaration/basic/input.css:12:5] + 12 | test; + : ^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/declaration/basic/input.css:12:5] + 12 | test; + : ^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/declaration/basic/input.css:12:5] + 12 | test; + : ^^^^^ + `---- + + x Ident { value: Atom('test' type=inline), raw: Atom('test' type=inline) } + ,-[$DIR/tests/recovery/declaration/basic/input.css:12:5] + 12 | test; + : ^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/declaration/basic/input.css:12:5] + 12 | test; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/declaration/basic/input.css:13:5] + 13 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/declaration/basic/input.css:13:5] + 13 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/declaration/basic/input.css:13:5] + 13 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/declaration/basic/input.css:13:5] + 13 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/declaration/basic/input.css:13:5] + 13 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/declaration/basic/input.css:13:5] + 13 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/declaration/basic/input.css:13:5] + 13 | color: red; + : ^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/declaration/important/span.rust-debug b/crates/swc_css_parser/tests/recovery/declaration/important/span.rust-debug new file mode 100644 index 00000000000..df26c423e45 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/declaration/important/span.rust-debug @@ -0,0 +1,136 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/declaration/important/input.css:1:1] + 1 | ,-> .a { + 2 | | color: white !!important; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/declaration/important/input.css:1:1] + 1 | ,-> .a { + 2 | | color: white !!important; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/declaration/important/input.css:1:1] + 1 | ,-> .a { + 2 | | color: white !!important; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/declaration/important/input.css:1:1] + 1 | .a { + : ^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/declaration/important/input.css:1:1] + 1 | .a { + : ^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/declaration/important/input.css:1:1] + 1 | .a { + : ^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/declaration/important/input.css:1:1] + 1 | .a { + : ^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/declaration/important/input.css:1:1] + 1 | .a { + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/declaration/important/input.css:1:1] + 1 | .a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/declaration/important/input.css:1:1] + 1 | ,-> .a { + 2 | | color: white !!important; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/declaration/important/input.css:2:5] + 2 | color: white !!important; + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/declaration/important/input.css:2:5] + 2 | color: white !!important; + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/declaration/important/input.css:2:5] + 2 | color: white !!important; + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident { value: Atom('color' type=inline), raw: Atom('color' type=inline) } + ,-[$DIR/tests/recovery/declaration/important/input.css:2:5] + 2 | color: white !!important; + : ^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/declaration/important/input.css:2:5] + 2 | color: white !!important; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/declaration/important/input.css:2:5] + 2 | color: white !!important; + : ^ + `---- + + x Ident { value: Atom('white' type=inline), raw: Atom('white' type=inline) } + ,-[$DIR/tests/recovery/declaration/important/input.css:2:5] + 2 | color: white !!important; + : ^^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/declaration/important/input.css:2:5] + 2 | color: white !!important; + : ^ + `---- + + x Delim { value: '!' } + ,-[$DIR/tests/recovery/declaration/important/input.css:2:5] + 2 | color: white !!important; + : ^ + `---- + + x Delim { value: '!' } + ,-[$DIR/tests/recovery/declaration/important/input.css:2:5] + 2 | color: white !!important; + : ^ + `---- + + x Ident { value: Atom('important' type=static), raw: Atom('important' type=static) } + ,-[$DIR/tests/recovery/declaration/important/input.css:2:5] + 2 | color: white !!important; + : ^^^^^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/declaration/important/input.css:2:5] + 2 | color: white !!important; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/delim-token/ampersand/span.rust-debug b/crates/swc_css_parser/tests/recovery/delim-token/ampersand/span.rust-debug new file mode 100644 index 00000000000..4e5089193c1 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/delim-token/ampersand/span.rust-debug @@ -0,0 +1,112 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:1:1] + 1 | ,-> a { + 2 | | prop: &; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:1:1] + 1 | ,-> a { + 2 | | prop: &; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:1:1] + 1 | ,-> a { + 2 | | prop: &; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:1:1] + 1 | ,-> a { + 2 | | prop: &; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:2:5] + 2 | prop: &; + : ^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:2:5] + 2 | prop: &; + : ^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:2:5] + 2 | prop: &; + : ^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:2:5] + 2 | prop: &; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:2:5] + 2 | prop: &; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:2:5] + 2 | prop: &; + : ^ + `---- + + x Delim { value: '&' } + ,-[$DIR/tests/recovery/delim-token/ampersand/input.css:2:5] + 2 | prop: &; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/delim-token/asterisk/span.rust-debug b/crates/swc_css_parser/tests/recovery/delim-token/asterisk/span.rust-debug new file mode 100644 index 00000000000..e38ce1e61b5 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/delim-token/asterisk/span.rust-debug @@ -0,0 +1,112 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:1:1] + 1 | ,-> a { + 2 | | color: *; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:1:1] + 1 | ,-> a { + 2 | | color: *; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:1:1] + 1 | ,-> a { + 2 | | color: *; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:1:1] + 1 | ,-> a { + 2 | | color: *; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:2:5] + 2 | color: *; + : ^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:2:5] + 2 | color: *; + : ^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:2:5] + 2 | color: *; + : ^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:2:5] + 2 | color: *; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:2:5] + 2 | color: *; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:2:5] + 2 | color: *; + : ^ + `---- + + x Delim { value: '*' } + ,-[$DIR/tests/recovery/delim-token/asterisk/input.css:2:5] + 2 | color: *; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/delim-token/at-sign/span.rust-debug b/crates/swc_css_parser/tests/recovery/delim-token/at-sign/span.rust-debug new file mode 100644 index 00000000000..30c92d796f0 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/delim-token/at-sign/span.rust-debug @@ -0,0 +1,124 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:1:1] + 1 | ,-> a { + 2 | | color: @ red; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:1:1] + 1 | ,-> a { + 2 | | color: @ red; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:1:1] + 1 | ,-> a { + 2 | | color: @ red; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:1:1] + 1 | ,-> a { + 2 | | color: @ red; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:2:5] + 2 | color: @ red; + : ^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:2:5] + 2 | color: @ red; + : ^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:2:5] + 2 | color: @ red; + : ^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:2:5] + 2 | color: @ red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:2:5] + 2 | color: @ red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:2:5] + 2 | color: @ red; + : ^ + `---- + + x Delim { value: '@' } + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:2:5] + 2 | color: @ red; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:2:5] + 2 | color: @ red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/at-sign/input.css:2:5] + 2 | color: @ red; + : ^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/delim-token/bang/span.rust-debug b/crates/swc_css_parser/tests/recovery/delim-token/bang/span.rust-debug new file mode 100644 index 00000000000..0c14e0df246 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/delim-token/bang/span.rust-debug @@ -0,0 +1,124 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/delim-token/bang/input.css:1:1] + 1 | ,-> a { + 2 | | color: !!; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/delim-token/bang/input.css:1:1] + 1 | ,-> a { + 2 | | color: !!; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/delim-token/bang/input.css:1:1] + 1 | ,-> a { + 2 | | color: !!; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/delim-token/bang/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/delim-token/bang/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/delim-token/bang/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/delim-token/bang/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/delim-token/bang/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/delim-token/bang/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/bang/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/delim-token/bang/input.css:1:1] + 1 | ,-> a { + 2 | | color: !!; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/bang/input.css:2:5] + 2 | color: !!; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/bang/input.css:2:5] + 2 | color: !!; + : ^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/delim-token/bang/input.css:2:5] + 2 | color: !!; + : ^^^^^^^^^^ + `---- + + x Ident { value: Atom('color' type=inline), raw: Atom('color' type=inline) } + ,-[$DIR/tests/recovery/delim-token/bang/input.css:2:5] + 2 | color: !!; + : ^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/delim-token/bang/input.css:2:5] + 2 | color: !!; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/delim-token/bang/input.css:2:5] + 2 | color: !!; + : ^ + `---- + + x Delim { value: '!' } + ,-[$DIR/tests/recovery/delim-token/bang/input.css:2:5] + 2 | color: !!; + : ^ + `---- + + x Delim { value: '!' } + ,-[$DIR/tests/recovery/delim-token/bang/input.css:2:5] + 2 | color: !!; + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/delim-token/bang/input.css:2:5] + 2 | color: !!; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/delim-token/bar/span.rust-debug b/crates/swc_css_parser/tests/recovery/delim-token/bar/span.rust-debug new file mode 100644 index 00000000000..a2432d027b3 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/delim-token/bar/span.rust-debug @@ -0,0 +1,112 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/delim-token/bar/input.css:1:1] + 1 | ,-> a { + 2 | | prop: |; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/delim-token/bar/input.css:1:1] + 1 | ,-> a { + 2 | | prop: |; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/delim-token/bar/input.css:1:1] + 1 | ,-> a { + 2 | | prop: |; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/delim-token/bar/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/delim-token/bar/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/delim-token/bar/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/delim-token/bar/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/delim-token/bar/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/delim-token/bar/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/bar/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/delim-token/bar/input.css:1:1] + 1 | ,-> a { + 2 | | prop: |; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/bar/input.css:2:5] + 2 | prop: |; + : ^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/bar/input.css:2:5] + 2 | prop: |; + : ^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/bar/input.css:2:5] + 2 | prop: |; + : ^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/bar/input.css:2:5] + 2 | prop: |; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/bar/input.css:2:5] + 2 | prop: |; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/bar/input.css:2:5] + 2 | prop: |; + : ^ + `---- + + x Delim { value: '|' } + ,-[$DIR/tests/recovery/delim-token/bar/input.css:2:5] + 2 | prop: |; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/delim-token/caret/span.rust-debug b/crates/swc_css_parser/tests/recovery/delim-token/caret/span.rust-debug new file mode 100644 index 00000000000..b4821d8200d --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/delim-token/caret/span.rust-debug @@ -0,0 +1,112 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/delim-token/caret/input.css:1:1] + 1 | ,-> a { + 2 | | prop: ^; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/delim-token/caret/input.css:1:1] + 1 | ,-> a { + 2 | | prop: ^; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/delim-token/caret/input.css:1:1] + 1 | ,-> a { + 2 | | prop: ^; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/delim-token/caret/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/delim-token/caret/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/delim-token/caret/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/delim-token/caret/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/delim-token/caret/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/delim-token/caret/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/caret/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/delim-token/caret/input.css:1:1] + 1 | ,-> a { + 2 | | prop: ^; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/caret/input.css:2:5] + 2 | prop: ^; + : ^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/caret/input.css:2:5] + 2 | prop: ^; + : ^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/caret/input.css:2:5] + 2 | prop: ^; + : ^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/caret/input.css:2:5] + 2 | prop: ^; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/caret/input.css:2:5] + 2 | prop: ^; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/caret/input.css:2:5] + 2 | prop: ^; + : ^ + `---- + + x Delim { value: '^' } + ,-[$DIR/tests/recovery/delim-token/caret/input.css:2:5] + 2 | prop: ^; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/delim-token/dollar/span.rust-debug b/crates/swc_css_parser/tests/recovery/delim-token/dollar/span.rust-debug new file mode 100644 index 00000000000..4582d8c1cc8 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/delim-token/dollar/span.rust-debug @@ -0,0 +1,112 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:1:1] + 1 | ,-> a { + 2 | | prop: $; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:1:1] + 1 | ,-> a { + 2 | | prop: $; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:1:1] + 1 | ,-> a { + 2 | | prop: $; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:1:1] + 1 | ,-> a { + 2 | | prop: $; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:2:5] + 2 | prop: $; + : ^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:2:5] + 2 | prop: $; + : ^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:2:5] + 2 | prop: $; + : ^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:2:5] + 2 | prop: $; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:2:5] + 2 | prop: $; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:2:5] + 2 | prop: $; + : ^ + `---- + + x Delim { value: '$' } + ,-[$DIR/tests/recovery/delim-token/dollar/input.css:2:5] + 2 | prop: $; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/delim-token/equals/span.rust-debug b/crates/swc_css_parser/tests/recovery/delim-token/equals/span.rust-debug new file mode 100644 index 00000000000..6f5c59ba37e --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/delim-token/equals/span.rust-debug @@ -0,0 +1,112 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/delim-token/equals/input.css:1:1] + 1 | ,-> a { + 2 | | prop: =; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/delim-token/equals/input.css:1:1] + 1 | ,-> a { + 2 | | prop: =; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/delim-token/equals/input.css:1:1] + 1 | ,-> a { + 2 | | prop: =; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/delim-token/equals/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/delim-token/equals/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/delim-token/equals/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/delim-token/equals/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/delim-token/equals/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/delim-token/equals/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/equals/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/delim-token/equals/input.css:1:1] + 1 | ,-> a { + 2 | | prop: =; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/equals/input.css:2:5] + 2 | prop: =; + : ^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/equals/input.css:2:5] + 2 | prop: =; + : ^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/equals/input.css:2:5] + 2 | prop: =; + : ^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/equals/input.css:2:5] + 2 | prop: =; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/equals/input.css:2:5] + 2 | prop: =; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/equals/input.css:2:5] + 2 | prop: =; + : ^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/delim-token/equals/input.css:2:5] + 2 | prop: =; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/delim-token/greater-than/span.rust-debug b/crates/swc_css_parser/tests/recovery/delim-token/greater-than/span.rust-debug new file mode 100644 index 00000000000..bf022d5d4ae --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/delim-token/greater-than/span.rust-debug @@ -0,0 +1,112 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:1:1] + 1 | ,-> a { + 2 | | prop: >; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:1:1] + 1 | ,-> a { + 2 | | prop: >; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:1:1] + 1 | ,-> a { + 2 | | prop: >; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:1:1] + 1 | ,-> a { + 2 | | prop: >; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:2:5] + 2 | prop: >; + : ^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:2:5] + 2 | prop: >; + : ^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:2:5] + 2 | prop: >; + : ^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:2:5] + 2 | prop: >; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:2:5] + 2 | prop: >; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:2:5] + 2 | prop: >; + : ^ + `---- + + x Delim { value: '>' } + ,-[$DIR/tests/recovery/delim-token/greater-than/input.css:2:5] + 2 | prop: >; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/delim-token/hash/span.rust-debug b/crates/swc_css_parser/tests/recovery/delim-token/hash/span.rust-debug new file mode 100644 index 00000000000..f719c8c6da3 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/delim-token/hash/span.rust-debug @@ -0,0 +1,124 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/delim-token/hash/input.css:1:1] + 1 | ,-> a { + 2 | | color: ##; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/delim-token/hash/input.css:1:1] + 1 | ,-> a { + 2 | | color: ##; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/delim-token/hash/input.css:1:1] + 1 | ,-> a { + 2 | | color: ##; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/delim-token/hash/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/delim-token/hash/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/delim-token/hash/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/delim-token/hash/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/delim-token/hash/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/delim-token/hash/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/hash/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/delim-token/hash/input.css:1:1] + 1 | ,-> a { + 2 | | color: ##; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/hash/input.css:2:5] + 2 | color: ##; + : ^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/hash/input.css:2:5] + 2 | color: ##; + : ^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/hash/input.css:2:5] + 2 | color: ##; + : ^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/hash/input.css:2:5] + 2 | color: ##; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/hash/input.css:2:5] + 2 | color: ##; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/hash/input.css:2:5] + 2 | color: ##; + : ^ + `---- + + x Delim { value: '#' } + ,-[$DIR/tests/recovery/delim-token/hash/input.css:2:5] + 2 | color: ##; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/hash/input.css:2:5] + 2 | color: ##; + : ^ + `---- + + x Delim { value: '#' } + ,-[$DIR/tests/recovery/delim-token/hash/input.css:2:5] + 2 | color: ##; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/delim-token/less-than/span.rust-debug b/crates/swc_css_parser/tests/recovery/delim-token/less-than/span.rust-debug new file mode 100644 index 00000000000..02dcf1a18d6 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/delim-token/less-than/span.rust-debug @@ -0,0 +1,112 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:1:1] + 1 | ,-> a { + 2 | | color: <; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:1:1] + 1 | ,-> a { + 2 | | color: <; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:1:1] + 1 | ,-> a { + 2 | | color: <; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:1:1] + 1 | ,-> a { + 2 | | color: <; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:2:5] + 2 | color: <; + : ^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:2:5] + 2 | color: <; + : ^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:2:5] + 2 | color: <; + : ^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:2:5] + 2 | color: <; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:2:5] + 2 | color: <; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:2:5] + 2 | color: <; + : ^ + `---- + + x Delim { value: '<' } + ,-[$DIR/tests/recovery/delim-token/less-than/input.css:2:5] + 2 | color: <; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/delim-token/minus/span.rust-debug b/crates/swc_css_parser/tests/recovery/delim-token/minus/span.rust-debug new file mode 100644 index 00000000000..c0f914ffb8f --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/delim-token/minus/span.rust-debug @@ -0,0 +1,294 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/delim-token/minus/input.css:1:1] + 1 | ,-> a { + 2 | | prop: -; + 3 | | prop1: 1 - 2; + 4 | | prop2: func(1 - 2); + 5 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/delim-token/minus/input.css:1:1] + 1 | ,-> a { + 2 | | prop: -; + 3 | | prop1: 1 - 2; + 4 | | prop2: func(1 - 2); + 5 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/delim-token/minus/input.css:1:1] + 1 | ,-> a { + 2 | | prop: -; + 3 | | prop1: 1 - 2; + 4 | | prop2: func(1 - 2); + 5 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/delim-token/minus/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/delim-token/minus/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/delim-token/minus/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/delim-token/minus/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/delim-token/minus/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/delim-token/minus/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/minus/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/delim-token/minus/input.css:1:1] + 1 | ,-> a { + 2 | | prop: -; + 3 | | prop1: 1 - 2; + 4 | | prop2: func(1 - 2); + 5 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/minus/input.css:2:5] + 2 | prop: -; + : ^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/minus/input.css:2:5] + 2 | prop: -; + : ^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/minus/input.css:2:5] + 2 | prop: -; + : ^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/minus/input.css:2:5] + 2 | prop: -; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/minus/input.css:2:5] + 2 | prop: -; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/minus/input.css:2:5] + 2 | prop: -; + : ^ + `---- + + x Delim { value: '-' } + ,-[$DIR/tests/recovery/delim-token/minus/input.css:2:5] + 2 | prop: -; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/minus/input.css:3:5] + 3 | prop1: 1 - 2; + : ^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/minus/input.css:3:5] + 3 | prop1: 1 - 2; + : ^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/minus/input.css:3:5] + 3 | prop1: 1 - 2; + : ^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/minus/input.css:3:5] + 3 | prop1: 1 - 2; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/minus/input.css:3:5] + 3 | prop1: 1 - 2; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/minus/input.css:3:5] + 3 | prop1: 1 - 2; + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/delim-token/minus/input.css:3:5] + 3 | prop1: 1 - 2; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/minus/input.css:3:5] + 3 | prop1: 1 - 2; + : ^ + `---- + + x Delim { value: '-' } + ,-[$DIR/tests/recovery/delim-token/minus/input.css:3:5] + 3 | prop1: 1 - 2; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/minus/input.css:3:5] + 3 | prop1: 1 - 2; + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/delim-token/minus/input.css:3:5] + 3 | prop1: 1 - 2; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^ + `---- + + x Number { value: 1.0, raw: Atom('1' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^ + `---- + + x Delim { value: '-' } + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^ + `---- + + x Number { value: 2.0, raw: Atom('2' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/delim-token/minus/input.css:4:5] + 4 | prop2: func(1 - 2); + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/delim-token/percent/span.rust-debug b/crates/swc_css_parser/tests/recovery/delim-token/percent/span.rust-debug new file mode 100644 index 00000000000..4e4feef25ab --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/delim-token/percent/span.rust-debug @@ -0,0 +1,112 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/delim-token/percent/input.css:1:1] + 1 | ,-> a { + 2 | | prop: %; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/delim-token/percent/input.css:1:1] + 1 | ,-> a { + 2 | | prop: %; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/delim-token/percent/input.css:1:1] + 1 | ,-> a { + 2 | | prop: %; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/delim-token/percent/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/delim-token/percent/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/delim-token/percent/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/delim-token/percent/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/delim-token/percent/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/delim-token/percent/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/percent/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/delim-token/percent/input.css:1:1] + 1 | ,-> a { + 2 | | prop: %; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/percent/input.css:2:5] + 2 | prop: %; + : ^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/percent/input.css:2:5] + 2 | prop: %; + : ^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/percent/input.css:2:5] + 2 | prop: %; + : ^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/percent/input.css:2:5] + 2 | prop: %; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/percent/input.css:2:5] + 2 | prop: %; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/percent/input.css:2:5] + 2 | prop: %; + : ^ + `---- + + x Delim { value: '%' } + ,-[$DIR/tests/recovery/delim-token/percent/input.css:2:5] + 2 | prop: %; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/delim-token/plus/span.rust-debug b/crates/swc_css_parser/tests/recovery/delim-token/plus/span.rust-debug new file mode 100644 index 00000000000..994d5da78c5 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/delim-token/plus/span.rust-debug @@ -0,0 +1,294 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/delim-token/plus/input.css:1:1] + 1 | ,-> a { + 2 | | prop: +; + 3 | | prop1: 1 + 2; + 4 | | prop2: func(1 + 2); + 5 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/delim-token/plus/input.css:1:1] + 1 | ,-> a { + 2 | | prop: +; + 3 | | prop1: 1 + 2; + 4 | | prop2: func(1 + 2); + 5 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/delim-token/plus/input.css:1:1] + 1 | ,-> a { + 2 | | prop: +; + 3 | | prop1: 1 + 2; + 4 | | prop2: func(1 + 2); + 5 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/delim-token/plus/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/delim-token/plus/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/delim-token/plus/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/delim-token/plus/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/delim-token/plus/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/delim-token/plus/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/plus/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/delim-token/plus/input.css:1:1] + 1 | ,-> a { + 2 | | prop: +; + 3 | | prop1: 1 + 2; + 4 | | prop2: func(1 + 2); + 5 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/plus/input.css:2:5] + 2 | prop: +; + : ^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/plus/input.css:2:5] + 2 | prop: +; + : ^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/plus/input.css:2:5] + 2 | prop: +; + : ^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/plus/input.css:2:5] + 2 | prop: +; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/plus/input.css:2:5] + 2 | prop: +; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/plus/input.css:2:5] + 2 | prop: +; + : ^ + `---- + + x Delim { value: '+' } + ,-[$DIR/tests/recovery/delim-token/plus/input.css:2:5] + 2 | prop: +; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/plus/input.css:3:5] + 3 | prop1: 1 + 2; + : ^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/plus/input.css:3:5] + 3 | prop1: 1 + 2; + : ^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/plus/input.css:3:5] + 3 | prop1: 1 + 2; + : ^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/plus/input.css:3:5] + 3 | prop1: 1 + 2; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/plus/input.css:3:5] + 3 | prop1: 1 + 2; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/plus/input.css:3:5] + 3 | prop1: 1 + 2; + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/delim-token/plus/input.css:3:5] + 3 | prop1: 1 + 2; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/plus/input.css:3:5] + 3 | prop1: 1 + 2; + : ^ + `---- + + x Delim { value: '+' } + ,-[$DIR/tests/recovery/delim-token/plus/input.css:3:5] + 3 | prop1: 1 + 2; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/plus/input.css:3:5] + 3 | prop1: 1 + 2; + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/delim-token/plus/input.css:3:5] + 3 | prop1: 1 + 2; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^ + `---- + + x Number { value: 1.0, raw: Atom('1' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^ + `---- + + x Delim { value: '+' } + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^ + `---- + + x Number { value: 2.0, raw: Atom('2' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/delim-token/plus/input.css:4:5] + 4 | prop2: func(1 + 2); + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/delim-token/question-mark/span.rust-debug b/crates/swc_css_parser/tests/recovery/delim-token/question-mark/span.rust-debug new file mode 100644 index 00000000000..36c371f9b95 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/delim-token/question-mark/span.rust-debug @@ -0,0 +1,112 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:1:1] + 1 | ,-> a { + 2 | | color: ?; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:1:1] + 1 | ,-> a { + 2 | | color: ?; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:1:1] + 1 | ,-> a { + 2 | | color: ?; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:1:1] + 1 | ,-> a { + 2 | | color: ?; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:2:5] + 2 | color: ?; + : ^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:2:5] + 2 | color: ?; + : ^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:2:5] + 2 | color: ?; + : ^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:2:5] + 2 | color: ?; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:2:5] + 2 | color: ?; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:2:5] + 2 | color: ?; + : ^ + `---- + + x Delim { value: '?' } + ,-[$DIR/tests/recovery/delim-token/question-mark/input.css:2:5] + 2 | color: ?; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/delim-token/star/span.rust-debug b/crates/swc_css_parser/tests/recovery/delim-token/star/span.rust-debug new file mode 100644 index 00000000000..994a46b56c3 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/delim-token/star/span.rust-debug @@ -0,0 +1,112 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/delim-token/star/input.css:1:1] + 1 | ,-> a { + 2 | | color: *; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/delim-token/star/input.css:1:1] + 1 | ,-> a { + 2 | | color: *; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/delim-token/star/input.css:1:1] + 1 | ,-> a { + 2 | | color: *; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/delim-token/star/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/delim-token/star/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/delim-token/star/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/delim-token/star/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/delim-token/star/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/delim-token/star/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/star/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/delim-token/star/input.css:1:1] + 1 | ,-> a { + 2 | | color: *; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/star/input.css:2:5] + 2 | color: *; + : ^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/star/input.css:2:5] + 2 | color: *; + : ^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/star/input.css:2:5] + 2 | color: *; + : ^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/star/input.css:2:5] + 2 | color: *; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/star/input.css:2:5] + 2 | color: *; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/star/input.css:2:5] + 2 | color: *; + : ^ + `---- + + x Delim { value: '*' } + ,-[$DIR/tests/recovery/delim-token/star/input.css:2:5] + 2 | color: *; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/delim-token/tilde/span.rust-debug b/crates/swc_css_parser/tests/recovery/delim-token/tilde/span.rust-debug new file mode 100644 index 00000000000..18027cfd72b --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/delim-token/tilde/span.rust-debug @@ -0,0 +1,112 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:1:1] + 1 | ,-> a { + 2 | | color: ~; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:1:1] + 1 | ,-> a { + 2 | | color: ~; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:1:1] + 1 | ,-> a { + 2 | | color: ~; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:1:1] + 1 | ,-> a { + 2 | | color: ~; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:2:5] + 2 | color: ~; + : ^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:2:5] + 2 | color: ~; + : ^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:2:5] + 2 | color: ~; + : ^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:2:5] + 2 | color: ~; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:2:5] + 2 | color: ~; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:2:5] + 2 | color: ~; + : ^ + `---- + + x Delim { value: '~' } + ,-[$DIR/tests/recovery/delim-token/tilde/input.css:2:5] + 2 | color: ~; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/function-token/span.rust-debug b/crates/swc_css_parser/tests/recovery/function-token/span.rust-debug new file mode 100644 index 00000000000..bf33eaa28f1 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/function-token/span.rust-debug @@ -0,0 +1,142 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/function-token/input.css:1:1] + 1 | ,-> a { + 2 | | prop: url("test") : + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/function-token/input.css:1:1] + 1 | ,-> a { + 2 | | prop: url("test") : + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/function-token/input.css:1:1] + 1 | ,-> a { + 2 | | prop: url("test") : + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/function-token/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/function-token/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/function-token/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/function-token/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/function-token/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/function-token/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function-token/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/function-token/input.css:1:1] + 1 | ,-> a { + 2 | | prop: url("test") : + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function-token/input.css:2:5] + 2 | prop: url("test") : + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function-token/input.css:2:5] + 2 | prop: url("test") : + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function-token/input.css:2:5] + 2 | prop: url("test") : + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function-token/input.css:2:5] + 2 | prop: url("test") : + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function-token/input.css:2:5] + 2 | prop: url("test") : + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function-token/input.css:2:5] + 2 | prop: url("test") : + : ^^^^^^^^^^^ + `---- + + x Url + ,-[$DIR/tests/recovery/function-token/input.css:2:5] + 2 | prop: url("test") : + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function-token/input.css:2:5] + 2 | prop: url("test") : + : ^^^ + `---- + + x UrlValue + ,-[$DIR/tests/recovery/function-token/input.css:2:5] + 2 | prop: url("test") : + : ^^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/function-token/input.css:2:5] + 2 | prop: url("test") : + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function-token/input.css:2:5] + 2 | prop: url("test") : + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/function-token/input.css:2:5] + 2 | prop: url("test") : + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/function/bad-comment-2/span.rust-debug b/crates/swc_css_parser/tests/recovery/function/bad-comment-2/span.rust-debug new file mode 100644 index 00000000000..d408d0948b4 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/function/bad-comment-2/span.rust-debug @@ -0,0 +1,140 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:1:1] + 1 | ,-> a { + 2 | | background: url( + 3 | | /* test */ + 4 | | "test.png" + 5 | | ); + 6 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:1:1] + 1 | ,-> a { + 2 | | background: url( + 3 | | /* test */ + 4 | | "test.png" + 5 | | ); + 6 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:1:1] + 1 | ,-> a { + 2 | | background: url( + 3 | | /* test */ + 4 | | "test.png" + 5 | | ); + 6 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:1:1] + 1 | ,-> a { + 2 | | background: url( + 3 | | /* test */ + 4 | | "test.png" + 5 | | ); + 6 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:2:5] + 2 | ,-> background: url( + 3 | | /* test */ + 4 | | "test.png" + 5 | `-> ); + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:2:5] + 2 | ,-> background: url( + 3 | | /* test */ + 4 | | "test.png" + 5 | `-> ); + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:2:5] + 2 | ,-> background: url( + 3 | | /* test */ + 4 | | "test.png" + 5 | `-> ); + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:2:5] + 2 | background: url( + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:2:5] + 2 | background: url( + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:2:5] + 2 | ,-> background: url( + 3 | | /* test */ + 4 | | "test.png" + 5 | `-> ); + `---- + + x BadUrl { name: Atom('url' type=static), raw_name: Atom('url' type=static), value: Atom(' + | /* test */ + | "test.png" + | ' type=dynamic), raw_value: Atom(' + | /* test */ + | "test.png" + | ' type=dynamic) } + ,-[$DIR/tests/recovery/function/bad-comment-2/input.css:2:5] + 2 | ,-> background: url( + 3 | | /* test */ + 4 | | "test.png" + 5 | `-> ); + `---- diff --git a/crates/swc_css_parser/tests/recovery/function/bad-comment/span.rust-debug b/crates/swc_css_parser/tests/recovery/function/bad-comment/span.rust-debug new file mode 100644 index 00000000000..8630d720fd4 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/function/bad-comment/span.rust-debug @@ -0,0 +1,140 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/function/bad-comment/input.css:1:1] + 1 | ,-> a { + 2 | | background: url( + 3 | | /* test */ + 4 | | test.png + 5 | | ); + 6 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/function/bad-comment/input.css:1:1] + 1 | ,-> a { + 2 | | background: url( + 3 | | /* test */ + 4 | | test.png + 5 | | ); + 6 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/function/bad-comment/input.css:1:1] + 1 | ,-> a { + 2 | | background: url( + 3 | | /* test */ + 4 | | test.png + 5 | | ); + 6 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/function/bad-comment/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/function/bad-comment/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/function/bad-comment/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/function/bad-comment/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/function/bad-comment/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/function/bad-comment/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/bad-comment/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/function/bad-comment/input.css:1:1] + 1 | ,-> a { + 2 | | background: url( + 3 | | /* test */ + 4 | | test.png + 5 | | ); + 6 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/bad-comment/input.css:2:5] + 2 | ,-> background: url( + 3 | | /* test */ + 4 | | test.png + 5 | `-> ); + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/bad-comment/input.css:2:5] + 2 | ,-> background: url( + 3 | | /* test */ + 4 | | test.png + 5 | `-> ); + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/bad-comment/input.css:2:5] + 2 | ,-> background: url( + 3 | | /* test */ + 4 | | test.png + 5 | `-> ); + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/bad-comment/input.css:2:5] + 2 | background: url( + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/bad-comment/input.css:2:5] + 2 | background: url( + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/bad-comment/input.css:2:5] + 2 | ,-> background: url( + 3 | | /* test */ + 4 | | test.png + 5 | `-> ); + `---- + + x BadUrl { name: Atom('url' type=static), raw_name: Atom('url' type=static), value: Atom(' + | /* test */ + | test.png + | ' type=dynamic), raw_value: Atom(' + | /* test */ + | test.png + | ' type=dynamic) } + ,-[$DIR/tests/recovery/function/bad-comment/input.css:2:5] + 2 | ,-> background: url( + 3 | | /* test */ + 4 | | test.png + 5 | `-> ); + `---- diff --git a/crates/swc_css_parser/tests/recovery/function/base/span.rust-debug b/crates/swc_css_parser/tests/recovery/function/base/span.rust-debug new file mode 100644 index 00000000000..c2ccb095157 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/function/base/span.rust-debug @@ -0,0 +1,754 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/function/base/input.css:1:1] + 1 | ,-> div { + 2 | | prop: func(1 + 2); + 3 | | prop: func(ident.ident); + 4 | | prop: func3( ident.ident ); + 5 | | prop: func([foo bar]); + 6 | | prop: func((foo, bar)); + 7 | | prop: func({ foo: bar }); + 8 | | prop: func(1, 2); + 9 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/function/base/input.css:1:1] + 1 | ,-> div { + 2 | | prop: func(1 + 2); + 3 | | prop: func(ident.ident); + 4 | | prop: func3( ident.ident ); + 5 | | prop: func([foo bar]); + 6 | | prop: func((foo, bar)); + 7 | | prop: func({ foo: bar }); + 8 | | prop: func(1, 2); + 9 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/function/base/input.css:1:1] + 1 | ,-> div { + 2 | | prop: func(1 + 2); + 3 | | prop: func(ident.ident); + 4 | | prop: func3( ident.ident ); + 5 | | prop: func([foo bar]); + 6 | | prop: func((foo, bar)); + 7 | | prop: func({ foo: bar }); + 8 | | prop: func(1, 2); + 9 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/function/base/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/function/base/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/function/base/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/function/base/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/function/base/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/function/base/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/function/base/input.css:1:1] + 1 | ,-> div { + 2 | | prop: func(1 + 2); + 3 | | prop: func(ident.ident); + 4 | | prop: func3( ident.ident ); + 5 | | prop: func([foo bar]); + 6 | | prop: func((foo, bar)); + 7 | | prop: func({ foo: bar }); + 8 | | prop: func(1, 2); + 9 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^ + `---- + + x Number { value: 1.0, raw: Atom('1' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^ + `---- + + x Delim { value: '+' } + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^ + `---- + + x Number { value: 2.0, raw: Atom('2' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/function/base/input.css:2:5] + 2 | prop: func(1 + 2); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:3:5] + 3 | prop: func(ident.ident); + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/base/input.css:3:5] + 3 | prop: func(ident.ident); + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/base/input.css:3:5] + 3 | prop: func(ident.ident); + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/base/input.css:3:5] + 3 | prop: func(ident.ident); + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:3:5] + 3 | prop: func(ident.ident); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:3:5] + 3 | prop: func(ident.ident); + : ^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/base/input.css:3:5] + 3 | prop: func(ident.ident); + : ^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:3:5] + 3 | prop: func(ident.ident); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:3:5] + 3 | prop: func(ident.ident); + : ^^^^^ + `---- + + x Ident { value: Atom('ident' type=inline), raw: Atom('ident' type=inline) } + ,-[$DIR/tests/recovery/function/base/input.css:3:5] + 3 | prop: func(ident.ident); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:3:5] + 3 | prop: func(ident.ident); + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/function/base/input.css:3:5] + 3 | prop: func(ident.ident); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:3:5] + 3 | prop: func(ident.ident); + : ^^^^^ + `---- + + x Ident { value: Atom('ident' type=inline), raw: Atom('ident' type=inline) } + ,-[$DIR/tests/recovery/function/base/input.css:3:5] + 3 | prop: func(ident.ident); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^^^^^ + `---- + + x Ident { value: Atom('ident' type=inline), raw: Atom('ident' type=inline) } + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^^^^^ + `---- + + x Ident { value: Atom('ident' type=inline), raw: Atom('ident' type=inline) } + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/function/base/input.css:4:5] + 4 | prop: func3( ident.ident ); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:5:5] + 5 | prop: func([foo bar]); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/base/input.css:5:5] + 5 | prop: func([foo bar]); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/base/input.css:5:5] + 5 | prop: func([foo bar]); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/base/input.css:5:5] + 5 | prop: func([foo bar]); + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:5:5] + 5 | prop: func([foo bar]); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:5:5] + 5 | prop: func([foo bar]); + : ^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/base/input.css:5:5] + 5 | prop: func([foo bar]); + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:5:5] + 5 | prop: func([foo bar]); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:5:5] + 5 | prop: func([foo bar]); + : ^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/function/base/input.css:5:5] + 5 | prop: func([foo bar]); + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:5:5] + 5 | prop: func([foo bar]); + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:5:5] + 5 | prop: func([foo bar]); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:5:5] + 5 | prop: func([foo bar]); + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:5:5] + 5 | prop: func([foo bar]); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:6:5] + 6 | prop: func((foo, bar)); + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/base/input.css:6:5] + 6 | prop: func((foo, bar)); + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/base/input.css:6:5] + 6 | prop: func((foo, bar)); + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/base/input.css:6:5] + 6 | prop: func((foo, bar)); + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:6:5] + 6 | prop: func((foo, bar)); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:6:5] + 6 | prop: func((foo, bar)); + : ^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/base/input.css:6:5] + 6 | prop: func((foo, bar)); + : ^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:6:5] + 6 | prop: func((foo, bar)); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:6:5] + 6 | prop: func((foo, bar)); + : ^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/function/base/input.css:6:5] + 6 | prop: func((foo, bar)); + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:6:5] + 6 | prop: func((foo, bar)); + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:6:5] + 6 | prop: func((foo, bar)); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:6:5] + 6 | prop: func((foo, bar)); + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/function/base/input.css:6:5] + 6 | prop: func((foo, bar)); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:6:5] + 6 | prop: func((foo, bar)); + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:6:5] + 6 | prop: func((foo, bar)); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:7:5] + 7 | prop: func({ foo: bar }); + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/base/input.css:7:5] + 7 | prop: func({ foo: bar }); + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/base/input.css:7:5] + 7 | prop: func({ foo: bar }); + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/base/input.css:7:5] + 7 | prop: func({ foo: bar }); + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:7:5] + 7 | prop: func({ foo: bar }); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:7:5] + 7 | prop: func({ foo: bar }); + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/base/input.css:7:5] + 7 | prop: func({ foo: bar }); + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:7:5] + 7 | prop: func({ foo: bar }); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:7:5] + 7 | prop: func({ foo: bar }); + : ^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/function/base/input.css:7:5] + 7 | prop: func({ foo: bar }); + : ^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:7:5] + 7 | prop: func({ foo: bar }); + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:7:5] + 7 | prop: func({ foo: bar }); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:7:5] + 7 | prop: func({ foo: bar }); + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/function/base/input.css:7:5] + 7 | prop: func({ foo: bar }); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:7:5] + 7 | prop: func({ foo: bar }); + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:7:5] + 7 | prop: func({ foo: bar }); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:8:5] + 8 | prop: func(1, 2); + : ^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/base/input.css:8:5] + 8 | prop: func(1, 2); + : ^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/base/input.css:8:5] + 8 | prop: func(1, 2); + : ^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/base/input.css:8:5] + 8 | prop: func(1, 2); + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:8:5] + 8 | prop: func(1, 2); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:8:5] + 8 | prop: func(1, 2); + : ^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/base/input.css:8:5] + 8 | prop: func(1, 2); + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/base/input.css:8:5] + 8 | prop: func(1, 2); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:8:5] + 8 | prop: func(1, 2); + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/base/input.css:8:5] + 8 | prop: func(1, 2); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:8:5] + 8 | prop: func(1, 2); + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/function/base/input.css:8:5] + 8 | prop: func(1, 2); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/base/input.css:8:5] + 8 | prop: func(1, 2); + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/base/input.css:8:5] + 8 | prop: func(1, 2); + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/function/calc/division/span.rust-debug b/crates/swc_css_parser/tests/recovery/function/calc/division/span.rust-debug new file mode 100644 index 00000000000..dc5d4d104ad --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/function/calc/division/span.rust-debug @@ -0,0 +1,220 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/function/calc/division/input.css:1:1] + 1 | ,-> .style { + 2 | | width: calc(2px/1px); + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/function/calc/division/input.css:1:1] + 1 | ,-> .style { + 2 | | width: calc(2px/1px); + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/function/calc/division/input.css:1:1] + 1 | ,-> .style { + 2 | | width: calc(2px/1px); + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/function/calc/division/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/function/calc/division/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/function/calc/division/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/function/calc/division/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/function/calc/division/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/calc/division/input.css:1:1] + 1 | .style { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/function/calc/division/input.css:1:1] + 1 | ,-> .style { + 2 | | width: calc(2px/1px); + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^^^^^ + `---- + + x CalcSum + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^^^^^ + `---- + + x CalcProductOrOperator + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^^^^^ + `---- + + x CalcProduct + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^^^^^ + `---- + + x CalcValueOrOperator + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^ + `---- + + x CalcValue + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^ + `---- + + x CalcValueOrOperator + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^ + `---- + + x CalcOperator + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^ + `---- + + x CalcValueOrOperator + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^ + `---- + + x CalcValue + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/calc/division/input.css:2:5] + 2 | width: calc(2px/1px); + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/function/calc/space/span.rust-debug b/crates/swc_css_parser/tests/recovery/function/calc/space/span.rust-debug new file mode 100644 index 00000000000..0f1a425a163 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/function/calc/space/span.rust-debug @@ -0,0 +1,232 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/function/calc/space/input.css:1:1] + 1 | ,-> .style { + 2 | | width: calc(2px+1px); + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/function/calc/space/input.css:1:1] + 1 | ,-> .style { + 2 | | width: calc(2px+1px); + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/function/calc/space/input.css:1:1] + 1 | ,-> .style { + 2 | | width: calc(2px+1px); + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/function/calc/space/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/function/calc/space/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/function/calc/space/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/function/calc/space/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/function/calc/space/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/calc/space/input.css:1:1] + 1 | .style { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/function/calc/space/input.css:1:1] + 1 | ,-> .style { + 2 | | width: calc(2px+1px); + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^ + `---- + + x CalcSum + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^ + `---- + + x CalcProductOrOperator + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^ + `---- + + x CalcProduct + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^ + `---- + + x CalcValueOrOperator + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^ + `---- + + x CalcValue + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^^ + `---- + + x CalcSum + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^^ + `---- + + x CalcProductOrOperator + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^^ + `---- + + x CalcProduct + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^^ + `---- + + x CalcValueOrOperator + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^^ + `---- + + x CalcValue + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/calc/space/input.css:2:5] + 2 | width: calc(2px+1px); + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/function/rgb/span.rust-debug b/crates/swc_css_parser/tests/recovery/function/rgb/span.rust-debug new file mode 100644 index 00000000000..9284d66bf90 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/function/rgb/span.rust-debug @@ -0,0 +1,1244 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/function/rgb/input.css:1:1] + 1 | ,-> .div { + 2 | | color: rgb("test"); + 3 | | + 4 | | color: rgb("test", 100, 100); + 5 | | color: rgb(100, "test", 100); + 6 | | color: rgb(100, 100, "test"); + 7 | | color: rgb(100, 100, 100, "test"); + 8 | | + 9 | | color: rgb("test" 100 100); + 10 | | color: rgb(100 "test" 100); + 11 | | color: rgb(100 100 "test"); + 12 | | color: rgb(100 100 100 / "test"); + 13 | | + 14 | | color: rgb(var(--red)); + 15 | | color: rgb(var(--red) var(--green)); + 16 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/function/rgb/input.css:1:1] + 1 | ,-> .div { + 2 | | color: rgb("test"); + 3 | | + 4 | | color: rgb("test", 100, 100); + 5 | | color: rgb(100, "test", 100); + 6 | | color: rgb(100, 100, "test"); + 7 | | color: rgb(100, 100, 100, "test"); + 8 | | + 9 | | color: rgb("test" 100 100); + 10 | | color: rgb(100 "test" 100); + 11 | | color: rgb(100 100 "test"); + 12 | | color: rgb(100 100 100 / "test"); + 13 | | + 14 | | color: rgb(var(--red)); + 15 | | color: rgb(var(--red) var(--green)); + 16 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/function/rgb/input.css:1:1] + 1 | ,-> .div { + 2 | | color: rgb("test"); + 3 | | + 4 | | color: rgb("test", 100, 100); + 5 | | color: rgb(100, "test", 100); + 6 | | color: rgb(100, 100, "test"); + 7 | | color: rgb(100, 100, 100, "test"); + 8 | | + 9 | | color: rgb("test" 100 100); + 10 | | color: rgb(100 "test" 100); + 11 | | color: rgb(100 100 "test"); + 12 | | color: rgb(100 100 100 / "test"); + 13 | | + 14 | | color: rgb(var(--red)); + 15 | | color: rgb(var(--red) var(--green)); + 16 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/function/rgb/input.css:1:1] + 1 | .div { + : ^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/function/rgb/input.css:1:1] + 1 | .div { + : ^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/function/rgb/input.css:1:1] + 1 | .div { + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/function/rgb/input.css:1:1] + 1 | .div { + : ^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/function/rgb/input.css:1:1] + 1 | .div { + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:1:1] + 1 | .div { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/function/rgb/input.css:1:1] + 1 | ,-> .div { + 2 | | color: rgb("test"); + 3 | | + 4 | | color: rgb("test", 100, 100); + 5 | | color: rgb(100, "test", 100); + 6 | | color: rgb(100, 100, "test"); + 7 | | color: rgb(100, 100, 100, "test"); + 8 | | + 9 | | color: rgb("test" 100 100); + 10 | | color: rgb(100 "test" 100); + 11 | | color: rgb(100 100 "test"); + 12 | | color: rgb(100 100 100 / "test"); + 13 | | + 14 | | color: rgb(var(--red)); + 15 | | color: rgb(var(--red) var(--green)); + 16 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:2:5] + 2 | color: rgb("test"); + : ^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/rgb/input.css:2:5] + 2 | color: rgb("test"); + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/rgb/input.css:2:5] + 2 | color: rgb("test"); + : ^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/rgb/input.css:2:5] + 2 | color: rgb("test"); + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:2:5] + 2 | color: rgb("test"); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:2:5] + 2 | color: rgb("test"); + : ^^^^^^^^^^^ + `---- + + x Color + ,-[$DIR/tests/recovery/function/rgb/input.css:2:5] + 2 | color: rgb("test"); + : ^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/rgb/input.css:2:5] + 2 | color: rgb("test"); + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:2:5] + 2 | color: rgb("test"); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:2:5] + 2 | color: rgb("test"); + : ^^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/function/rgb/input.css:2:5] + 2 | color: rgb("test"); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Color + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:4:5] + 4 | color: rgb("test", 100, 100); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Color + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:5:5] + 5 | color: rgb(100, "test", 100); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Color + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/function/rgb/input.css:6:5] + 6 | color: rgb(100, 100, "test"); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Color + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/function/rgb/input.css:7:5] + 7 | color: rgb(100, 100, 100, "test"); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:9:5] + 9 | color: rgb("test" 100 100); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/rgb/input.css:9:5] + 9 | color: rgb("test" 100 100); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/rgb/input.css:9:5] + 9 | color: rgb("test" 100 100); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/rgb/input.css:9:5] + 9 | color: rgb("test" 100 100); + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:9:5] + 9 | color: rgb("test" 100 100); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:9:5] + 9 | color: rgb("test" 100 100); + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Color + ,-[$DIR/tests/recovery/function/rgb/input.css:9:5] + 9 | color: rgb("test" 100 100); + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/rgb/input.css:9:5] + 9 | color: rgb("test" 100 100); + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:9:5] + 9 | color: rgb("test" 100 100); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:9:5] + 9 | color: rgb("test" 100 100); + : ^^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/function/rgb/input.css:9:5] + 9 | color: rgb("test" 100 100); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:9:5] + 9 | color: rgb("test" 100 100); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:9:5] + 9 | color: rgb("test" 100 100); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:9:5] + 9 | color: rgb("test" 100 100); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:9:5] + 9 | color: rgb("test" 100 100); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:10:5] + 10 | color: rgb(100 "test" 100); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/rgb/input.css:10:5] + 10 | color: rgb(100 "test" 100); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/rgb/input.css:10:5] + 10 | color: rgb(100 "test" 100); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/rgb/input.css:10:5] + 10 | color: rgb(100 "test" 100); + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:10:5] + 10 | color: rgb(100 "test" 100); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:10:5] + 10 | color: rgb(100 "test" 100); + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Color + ,-[$DIR/tests/recovery/function/rgb/input.css:10:5] + 10 | color: rgb(100 "test" 100); + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/rgb/input.css:10:5] + 10 | color: rgb(100 "test" 100); + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:10:5] + 10 | color: rgb(100 "test" 100); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:10:5] + 10 | color: rgb(100 "test" 100); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:10:5] + 10 | color: rgb(100 "test" 100); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:10:5] + 10 | color: rgb(100 "test" 100); + : ^^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/function/rgb/input.css:10:5] + 10 | color: rgb(100 "test" 100); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:10:5] + 10 | color: rgb(100 "test" 100); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:10:5] + 10 | color: rgb(100 "test" 100); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:11:5] + 11 | color: rgb(100 100 "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/rgb/input.css:11:5] + 11 | color: rgb(100 100 "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/rgb/input.css:11:5] + 11 | color: rgb(100 100 "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/rgb/input.css:11:5] + 11 | color: rgb(100 100 "test"); + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:11:5] + 11 | color: rgb(100 100 "test"); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:11:5] + 11 | color: rgb(100 100 "test"); + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Color + ,-[$DIR/tests/recovery/function/rgb/input.css:11:5] + 11 | color: rgb(100 100 "test"); + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/rgb/input.css:11:5] + 11 | color: rgb(100 100 "test"); + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:11:5] + 11 | color: rgb(100 100 "test"); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:11:5] + 11 | color: rgb(100 100 "test"); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:11:5] + 11 | color: rgb(100 100 "test"); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:11:5] + 11 | color: rgb(100 100 "test"); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:11:5] + 11 | color: rgb(100 100 "test"); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:11:5] + 11 | color: rgb(100 100 "test"); + : ^^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/function/rgb/input.css:11:5] + 11 | color: rgb(100 100 "test"); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Color + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/function/rgb/input.css:12:5] + 12 | color: rgb(100 100 100 / "test"); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:14:5] + 14 | color: rgb(var(--red)); + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/rgb/input.css:14:5] + 14 | color: rgb(var(--red)); + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/rgb/input.css:14:5] + 14 | color: rgb(var(--red)); + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/rgb/input.css:14:5] + 14 | color: rgb(var(--red)); + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:14:5] + 14 | color: rgb(var(--red)); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:14:5] + 14 | color: rgb(var(--red)); + : ^^^^^^^^^^^^^^^ + `---- + + x Color + ,-[$DIR/tests/recovery/function/rgb/input.css:14:5] + 14 | color: rgb(var(--red)); + : ^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/rgb/input.css:14:5] + 14 | color: rgb(var(--red)); + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:14:5] + 14 | color: rgb(var(--red)); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:14:5] + 14 | color: rgb(var(--red)); + : ^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/rgb/input.css:14:5] + 14 | color: rgb(var(--red)); + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:14:5] + 14 | color: rgb(var(--red)); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:14:5] + 14 | color: rgb(var(--red)); + : ^^^^^ + `---- + + x DashedIdent + ,-[$DIR/tests/recovery/function/rgb/input.css:14:5] + 14 | color: rgb(var(--red)); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Color + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^^^ + `---- + + x DashedIdent + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^^^^^ + `---- + + x DashedIdent + ,-[$DIR/tests/recovery/function/rgb/input.css:15:5] + 15 | color: rgb(var(--red) var(--green)); + : ^^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/function/unclosed-2/span.rust-debug b/crates/swc_css_parser/tests/recovery/function/unclosed-2/span.rust-debug new file mode 100644 index 00000000000..baf618250fd --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/function/unclosed-2/span.rust-debug @@ -0,0 +1,236 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:1:1] + 1 | ,-> .style { + 2 | | grid-template-columns: repeat(4, [col-start] 12px + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:1:1] + 1 | ,-> .style { + 2 | | grid-template-columns: repeat(4, [col-start] 12px + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:1:1] + 1 | ,-> .style { + 2 | | grid-template-columns: repeat(4, [col-start] 12px + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:1:1] + 1 | .style { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:1:1] + 1 | ,-> .style { + 2 | | grid-template-columns: repeat(4, [col-start] 12px + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | ,-> grid-template-columns: repeat(4, [col-start] 12px + 3 | `-> } + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | ,-> grid-template-columns: repeat(4, [col-start] 12px + 3 | `-> } + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | ,-> grid-template-columns: repeat(4, [col-start] 12px + 3 | `-> } + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | ,-> grid-template-columns: repeat(4, [col-start] 12px + 3 | `-> } + `---- + + x Function + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | ,-> grid-template-columns: repeat(4, [col-start] 12px + 3 | `-> } + `---- + + x Ident + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^ + `---- + + x Number { value: 4.0, raw: Atom('4' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^ + `---- + + x Comma + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^^^^^^^^^ + `---- + + x Ident { value: Atom('col-start' type=dynamic), raw: Atom('col-start' type=dynamic) } + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^^^^ + `---- + + x Dimension { value: 12.0, raw_value: Atom('12' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^ + 3 | } + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start] 12px + : ^ + 3 | } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:3:1] + 3 | } + : ^ + `---- + + x RBrace + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:3:1] + 3 | } + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:3:1] + 3 | } + : ^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/function/unclosed-2/input.css:3:1] + 3 | } + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/function/unclosed/span.rust-debug b/crates/swc_css_parser/tests/recovery/function/unclosed/span.rust-debug new file mode 100644 index 00000000000..c5e8bcdcfa2 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/function/unclosed/span.rust-debug @@ -0,0 +1,176 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/function/unclosed/input.css:1:1] + 1 | ,-> .style { + 2 | | width: min(500px; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/function/unclosed/input.css:1:1] + 1 | ,-> .style { + 2 | | width: min(500px; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/function/unclosed/input.css:1:1] + 1 | ,-> .style { + 2 | | width: min(500px; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/function/unclosed/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/function/unclosed/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/function/unclosed/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/function/unclosed/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/function/unclosed/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/unclosed/input.css:1:1] + 1 | .style { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/function/unclosed/input.css:1:1] + 1 | ,-> .style { + 2 | | width: min(500px; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed/input.css:2:5] + 2 | ,-> width: min(500px; + 3 | `-> } + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/unclosed/input.css:2:5] + 2 | ,-> width: min(500px; + 3 | `-> } + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/unclosed/input.css:2:5] + 2 | ,-> width: min(500px; + 3 | `-> } + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/unclosed/input.css:2:5] + 2 | width: min(500px; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/unclosed/input.css:2:5] + 2 | width: min(500px; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed/input.css:2:5] + 2 | ,-> width: min(500px; + 3 | `-> } + `---- + + x Function + ,-[$DIR/tests/recovery/function/unclosed/input.css:2:5] + 2 | ,-> width: min(500px; + 3 | `-> } + `---- + + x Ident + ,-[$DIR/tests/recovery/function/unclosed/input.css:2:5] + 2 | width: min(500px; + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed/input.css:2:5] + 2 | width: min(500px; + : ^^^^^ + `---- + + x Dimension { value: 500.0, raw_value: Atom('500' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/function/unclosed/input.css:2:5] + 2 | width: min(500px; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed/input.css:2:5] + 2 | width: min(500px; + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/function/unclosed/input.css:2:5] + 2 | width: min(500px; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed/input.css:2:5] + 2 | width: min(500px; + : ^ + 3 | } + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/function/unclosed/input.css:2:5] + 2 | width: min(500px; + : ^ + 3 | } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed/input.css:3:1] + 3 | } + : ^ + `---- + + x RBrace + ,-[$DIR/tests/recovery/function/unclosed/input.css:3:1] + 3 | } + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/unclosed/input.css:3:1] + 3 | } + : ^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/function/unclosed/input.css:3:1] + 3 | } + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/function/var/span.rust-debug b/crates/swc_css_parser/tests/recovery/function/var/span.rust-debug new file mode 100644 index 00000000000..50672ff120e --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/function/var/span.rust-debug @@ -0,0 +1,402 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/function/var/input.css:1:1] + 1 | ,-> .style { + 2 | | border: var(#fff); + 3 | | border: var(calc(10px + 10px)); + 4 | | border: var(90rem); + 5 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/function/var/input.css:1:1] + 1 | ,-> .style { + 2 | | border: var(#fff); + 3 | | border: var(calc(10px + 10px)); + 4 | | border: var(90rem); + 5 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/function/var/input.css:1:1] + 1 | ,-> .style { + 2 | | border: var(#fff); + 3 | | border: var(calc(10px + 10px)); + 4 | | border: var(90rem); + 5 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/function/var/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/function/var/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/function/var/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/function/var/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/function/var/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/var/input.css:1:1] + 1 | .style { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/function/var/input.css:1:1] + 1 | ,-> .style { + 2 | | border: var(#fff); + 3 | | border: var(calc(10px + 10px)); + 4 | | border: var(90rem); + 5 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/var/input.css:2:5] + 2 | border: var(#fff); + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/var/input.css:2:5] + 2 | border: var(#fff); + : ^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/var/input.css:2:5] + 2 | border: var(#fff); + : ^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/var/input.css:2:5] + 2 | border: var(#fff); + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/var/input.css:2:5] + 2 | border: var(#fff); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/var/input.css:2:5] + 2 | border: var(#fff); + : ^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/var/input.css:2:5] + 2 | border: var(#fff); + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/var/input.css:2:5] + 2 | border: var(#fff); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/var/input.css:2:5] + 2 | border: var(#fff); + : ^^^^ + `---- + + x Color + ,-[$DIR/tests/recovery/function/var/input.css:2:5] + 2 | border: var(#fff); + : ^^^^ + `---- + + x HexColor + ,-[$DIR/tests/recovery/function/var/input.css:2:5] + 2 | border: var(#fff); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^^^^^^^^ + `---- + + x CalcSum + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^^^^^^^^ + `---- + + x CalcProductOrOperator + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^ + `---- + + x CalcProduct + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^ + `---- + + x CalcValueOrOperator + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^ + `---- + + x CalcValue + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^ + `---- + + x CalcProductOrOperator + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^ + `---- + + x CalcOperator + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^ + `---- + + x CalcProductOrOperator + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^ + `---- + + x CalcProduct + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^ + `---- + + x CalcValueOrOperator + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^ + `---- + + x CalcValue + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/var/input.css:3:5] + 3 | border: var(calc(10px + 10px)); + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/var/input.css:4:5] + 4 | border: var(90rem); + : ^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/function/var/input.css:4:5] + 4 | border: var(90rem); + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/function/var/input.css:4:5] + 4 | border: var(90rem); + : ^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/function/var/input.css:4:5] + 4 | border: var(90rem); + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/var/input.css:4:5] + 4 | border: var(90rem); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/var/input.css:4:5] + 4 | border: var(90rem); + : ^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/function/var/input.css:4:5] + 4 | border: var(90rem); + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/var/input.css:4:5] + 4 | border: var(90rem); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/function/var/input.css:4:5] + 4 | border: var(90rem); + : ^^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/function/var/input.css:4:5] + 4 | border: var(90rem); + : ^^^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/function/var/input.css:4:5] + 4 | border: var(90rem); + : ^^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/function/var/input.css:4:5] + 4 | border: var(90rem); + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/function/var/input.css:4:5] + 4 | border: var(90rem); + : ^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/hacks/span.rust-debug b/crates/swc_css_parser/tests/recovery/hacks/span.rust-debug new file mode 100644 index 00000000000..de3867098c3 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/hacks/span.rust-debug @@ -0,0 +1,15218 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/hacks/input.css:1:1] + 1 | ,-> /* Android */ + 2 | | + 3 | | .selector:not(*:root) {} + 4 | | + 5 | | @media screen and (min-width:0\0) {} + 6 | | + 7 | | /* Chrome */ + 8 | | + 9 | | .selector:not(*:root) {} + 10 | | + 11 | | @supports (-webkit-appearance:none) {} + 12 | | + 13 | | .selector { (;property: value;); } + 14 | | .selector { [;property: value;]; } + 15 | | + 16 | | @media \\0 screen {} + 17 | | + 18 | | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + 19 | | + 20 | | /* Firefox */ + 21 | | + 22 | | body:empty .selector {} + 23 | | + 24 | | body:last-child .selector, x:-moz-any-link {} + 25 | | + 26 | | @media \0 all {} + 27 | | + 28 | | body:last-child .selector, x:-moz-any-link, x:default {} + 29 | | + 30 | | body:not(:-moz-handler-blocked) .selector {} + 31 | | + 32 | | @media screen and (-moz-images-in-menus:0) {} + 33 | | + 34 | | @media screen and (min--moz-device-pixel-ratio:0) {} + 35 | | + 36 | | _::-moz-progress-bar, body:last-child .selector {} + 37 | | + 38 | | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + 39 | | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + 40 | | + 41 | | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + 42 | | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + 43 | | + 44 | | @supports (-moz-appearance:meterbar) {} + 45 | | + 46 | | _::-moz-range-track, body:last-child .selector {} + 47 | | + 48 | | @supports (-moz-appearance:meterbar) and (display:flex) {} + 49 | | + 50 | | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + 51 | | + 52 | | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + 53 | | + 54 | | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + 55 | | + 56 | | @supports (-moz-appearance:meterbar) and (all:initial) {} + 57 | | + 58 | | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + 59 | | + 60 | | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + 61 | | + 62 | | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + 63 | | + 64 | | _:-moz-tree-row(hover), .selector {} + 65 | | + 66 | | _::selection, .selector:not([attr*='']) {} + 67 | | + 68 | | /* Internet explorer/edge */ + 69 | | + 70 | | @supports (-webkit-appearance:none) {} + 71 | | + 72 | | * html .selector {} + 73 | | .unused-class.selector {} + 74 | | + 75 | | html > body .selector {} + 76 | | + 77 | | /*.selector, {}*/ + 78 | | + 79 | | *:first-child+html .selector {} + 80 | | .selector, x:-IE7 {} + 81 | | *+html .selector {} + 82 | | body*.selector {} + 83 | | + 84 | | .selector\ {} + 85 | | + 86 | | html > /**/ body .selector {} + 87 | | head ~ /**/ body .selector {} + 88 | | + 89 | | _::selection, .selector:not([attr*='']) {} + 90 | | + 91 | | :root .selector {} + 92 | | body:last-child .selector {} + 93 | | body:nth-of-type(1) .selector {} + 94 | | body:first-of-type .selector {} + 95 | | .selector:not([attr*='']) {} + 96 | | + 97 | | .selector { _property: value; } + 98 | | .selector { -property: value; } + 99 | | + 100 | | .selector { property: value\9; } + 101 | | .selector { property/*\**/: value\9; } + 102 | | + 103 | | .selector { + 104 | | !property: value; + 105 | | color: red; + 106 | | } + 107 | | .selector { + 108 | | $property: value; + 109 | | color: red; + 110 | | } + 111 | | .selector { + 112 | | &property: value; + 113 | | color: red; + 114 | | } + 115 | | .selector { + 116 | | *property: value; + 117 | | color: red; + 118 | | } + 119 | | .selector { + 120 | | )property: value; + 121 | | color: red; + 122 | | } + 123 | | .selector { + 124 | | =property: value; + 125 | | color: red; + 126 | | } + 127 | | .selector { + 128 | | %property: value; + 129 | | color: red; + 130 | | } + 131 | | .selector { + 132 | | +property: value; + 133 | | color: red; + 134 | | } + 135 | | .selector { + 136 | | @property: value; + 137 | | color: red; + 138 | | } + 139 | | .selector { + 140 | | ,property: value; + 141 | | color: red; + 142 | | } + 143 | | .selector { + 144 | | .property: value; + 145 | | color: red; + 146 | | } + 147 | | .selector { + 148 | | /property: value; + 149 | | color: red; + 150 | | } + 151 | | .selector { + 152 | | `property: value; + 153 | | color: red; + 154 | | } + 155 | | .selector { + 156 | | ]property: value; + 157 | | color: red; + 158 | | } + 159 | | .selector { + 160 | | #property: value; + 161 | | color: red; + 162 | | } + 163 | | .selector { + 164 | | ~property: value; + 165 | | color: red; + 166 | | } + 167 | | .selector { + 168 | | ?property: value; + 169 | | color: red; + 170 | | } + 171 | | .selector { + 172 | | :property: value; + 173 | | color: red; + 174 | | } + 175 | | .selector { + 176 | | |property: value; + 177 | | color: red; + 178 | | } + 179 | | + 180 | | .selector { property: value !ie; } + 181 | | + 182 | | @media screen\9 {} + 183 | | + 184 | | @media \0screen\,screen\9 {} + 185 | | + 186 | | @media \0screen {} + 187 | | + 188 | | @media screen and (min-width:0\0) {} + 189 | | + 190 | | _:-ms-input-placeholder, :root .selector {} + 191 | | + 192 | | _:-ms-fullscreen, :root .selector {} + 193 | | + 194 | | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + 195 | | + 196 | | @media screen { @media (min-width: 0px) {} } + 197 | | + 198 | | /* Opera */ + 199 | | + 200 | | .selector:not(*:root) {} + 201 | | + 202 | | @supports (-webkit-appearance:none) {} + 203 | | + 204 | | .selector { (;property: value;); } + 205 | | .selector { [;property: value;]; } + 206 | | + 207 | | html:first-child .selector {} + 208 | | + 209 | | _:-o-prefocus, body:last-child .selector {} + 210 | | + 211 | | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + 212 | | + 213 | | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + 214 | | + 215 | | *|html[xmlns*=""] .selector {} + 216 | | + 217 | | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + 218 | | + 219 | | /* Safari */ + 220 | | + 221 | | .selector:not(*:root) {} + 222 | | + 223 | | @supports (-webkit-appearance:none) {} + 224 | | + 225 | | .selector { (;property: value;); } + 226 | | .selector { [;property: value;]; } + 227 | | + 228 | | @media screen and (min-width:0\0) {} + 229 | | + 230 | | @media screen { @media (min-width: 0px) {} } + 231 | | + 232 | | html:first-child .selector {} + 233 | | + 234 | | html[xmlns*=""] body:last-child .selector {} + 235 | | html[xmlns*=""]:root .selector {} + 236 | | + 237 | | *|html[xmlns*=""] .selector {} + 238 | | + 239 | | _::-moz-svg-foreign-content, :root .selector {} + 240 | | + 241 | | @media \\0 screen {} + 242 | | + 243 | | a { + 244 | | *color : black; + 245 | | _background: white; + 246 | | font-size/**/: big; + 247 | | $(var)-size: 100%; + 248 | | } + 249 | | + 250 | | a{*b:c} + 251 | | + 252 | | div { + 253 | | color: red; + 254 | | } + 255 | | + 256 | | /*\*//*/ selector { property:value; } /**/ + 257 | | selector { property:value; p\roperty: normal-value; } + 258 | | + 259 | | + 260 | | div { + 261 | | color: red; + 262 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^ + `---- + + x UniversalSelector + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:3:1] + 3 | .selector:not(*:root) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^ + `---- + + x MediaConditionWithoutOr + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^ + `---- + + x UnknownDimension + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:5:1] + 5 | @media screen and (min-width:0\0) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^ + `---- + + x UniversalSelector + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:9:1] + 9 | .selector:not(*:root) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:11:1] + 11 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:11:1] + 11 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:11:1] + 11 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:11:1] + 11 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^ + `---- + + x SupportsCondition + ,-[$DIR/tests/recovery/hacks/input.css:11:1] + 11 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:11:1] + 11 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:11:1] + 11 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:11:1] + 11 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:11:1] + 11 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:11:1] + 11 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:11:1] + 11 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:11:1] + 11 | @supports (-webkit-appearance:none) {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:11:1] + 11 | @supports (-webkit-appearance:none) {} + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:11:1] + 11 | @supports (-webkit-appearance:none) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^ + `---- + + x LParen + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^^ + `---- + + x RParen + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:13:1] + 13 | .selector { (;property: value;); } + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^ + `---- + + x LBracket + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^^ + `---- + + x RBracket + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:14:1] + 14 | .selector { [;property: value;]; } + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:16:1] + 16 | @media \\0 screen {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:16:1] + 16 | @media \\0 screen {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:16:1] + 16 | @media \\0 screen {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:16:1] + 16 | @media \\0 screen {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:16:1] + 16 | @media \\0 screen {} + : ^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:16:1] + 16 | @media \\0 screen {} + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:16:1] + 16 | @media \\0 screen {} + : ^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:16:1] + 16 | @media \\0 screen {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^ + `---- + + x MediaConditionWithoutOr + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaAnd + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^ + `---- + + x Resolution + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:18:1] + 18 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:22:1] + 22 | body:empty .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^^^^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:24:1] + 24 | body:last-child .selector, x:-moz-any-link {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:26:1] + 26 | @media \0 all {} + : ^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:26:1] + 26 | @media \0 all {} + : ^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:26:1] + 26 | @media \0 all {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:26:1] + 26 | @media \0 all {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:26:1] + 26 | @media \0 all {} + : ^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:26:1] + 26 | @media \0 all {} + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:26:1] + 26 | @media \0 all {} + : ^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:26:1] + 26 | @media \0 all {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:28:1] + 28 | body:last-child .selector, x:-moz-any-link, x:default {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:30:1] + 30 | body:not(:-moz-handler-blocked) .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^^^ + `---- + + x MediaConditionWithoutOr + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:32:1] + 32 | @media screen and (-moz-images-in-menus:0) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^^^ + `---- + + x MediaConditionWithoutOr + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:34:1] + 34 | @media screen and (min--moz-device-pixel-ratio:0) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x PseudoElementSelector + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^^^^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:36:1] + 36 | _::-moz-progress-bar, body:last-child .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^ + `---- + + x MediaConditionWithoutOr + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaAnd + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^ + `---- + + x Resolution + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:38:1] + 38 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: .001dpcm) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^ + `---- + + x MediaConditionWithoutOr + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaAnd + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^ + `---- + + x Resolution + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:39:1] + 39 | @media all and (-moz-images-in-menus:0) and (min-resolution: .001dpcm) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^ + `---- + + x MediaConditionWithoutOr + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaCondition + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionAllType + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:41:1] + 41 | @media all and (min--moz-device-pixel-ratio:0) { @media (min-width: 0px) {} } + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^ + `---- + + x MediaConditionWithoutOr + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaCondition + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionAllType + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:42:1] + 42 | @media all and (-moz-images-in-menus:0) { @media (min-width: 0px) {} } + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:44:1] + 44 | @supports (-moz-appearance:meterbar) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:44:1] + 44 | @supports (-moz-appearance:meterbar) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:44:1] + 44 | @supports (-moz-appearance:meterbar) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:44:1] + 44 | @supports (-moz-appearance:meterbar) {} + : ^^^^^^^^ + `---- + + x SupportsCondition + ,-[$DIR/tests/recovery/hacks/input.css:44:1] + 44 | @supports (-moz-appearance:meterbar) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:44:1] + 44 | @supports (-moz-appearance:meterbar) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:44:1] + 44 | @supports (-moz-appearance:meterbar) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:44:1] + 44 | @supports (-moz-appearance:meterbar) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:44:1] + 44 | @supports (-moz-appearance:meterbar) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:44:1] + 44 | @supports (-moz-appearance:meterbar) {} + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:44:1] + 44 | @supports (-moz-appearance:meterbar) {} + : ^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:44:1] + 44 | @supports (-moz-appearance:meterbar) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:44:1] + 44 | @supports (-moz-appearance:meterbar) {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:44:1] + 44 | @supports (-moz-appearance:meterbar) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x PseudoElementSelector + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^^^^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:46:1] + 46 | _::-moz-range-track, body:last-child .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^ + `---- + + x SupportsCondition + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsAnd + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:48:1] + 48 | @supports (-moz-appearance:meterbar) and (display:flex) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^ + `---- + + x SupportsCondition + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsAnd + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:50:1] + 50 | @supports (-moz-appearance:meterbar) and (cursor:zoom-in) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^ + `---- + + x SupportsCondition + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsAnd + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:52:1] + 52 | @supports (-moz-appearance:meterbar) and (background-attachment:local) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^ + `---- + + x SupportsCondition + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsAnd + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^ + `---- + + x Angle + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:54:1] + 54 | @supports (-moz-appearance:meterbar) and (image-orientation:90deg) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^ + `---- + + x SupportsCondition + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x SupportsAnd + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:56:1] + 56 | @supports (-moz-appearance:meterbar) and (all:initial) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^ + `---- + + x SupportsCondition + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsAnd + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:58:1] + 58 | @supports (-moz-appearance:meterbar) and (list-style-type:japanese-formal) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^ + `---- + + x MediaConditionWithoutOr + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaAnd + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^ + `---- + + x Resolution + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:60:1] + 60 | @media all and (min--moz-device-pixel-ratio:0) and (min-resolution: 3e1dpcm) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^ + `---- + + x SupportsCondition + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsAnd + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:62:1] + 62 | @supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^^^^^^^^^^^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^^^^^ + `---- + + x Ident { value: Atom('hover' type=inline), raw: Atom('hover' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:64:1] + 64 | _:-moz-tree-row(hover), .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^ + `---- + + x PseudoElementSelector + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x AttributeSelector + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^^^ + `---- + + x AttributeSelectorMatcher + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^ + `---- + + x AttributeSelectorValue + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^ + `---- + + x Str + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:66:1] + 66 | _::selection, .selector:not([attr*='']) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:70:1] + 70 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:70:1] + 70 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:70:1] + 70 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:70:1] + 70 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^ + `---- + + x SupportsCondition + ,-[$DIR/tests/recovery/hacks/input.css:70:1] + 70 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:70:1] + 70 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:70:1] + 70 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:70:1] + 70 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:70:1] + 70 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:70:1] + 70 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:70:1] + 70 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:70:1] + 70 | @supports (-webkit-appearance:none) {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:70:1] + 70 | @supports (-webkit-appearance:none) {} + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:70:1] + 70 | @supports (-webkit-appearance:none) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^ + `---- + + x UniversalSelector + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:72:1] + 72 | * html .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:73:1] + 73 | .unused-class.selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:73:1] + 73 | .unused-class.selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:73:1] + 73 | .unused-class.selector {} + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:73:1] + 73 | .unused-class.selector {} + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:73:1] + 73 | .unused-class.selector {} + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:73:1] + 73 | .unused-class.selector {} + : ^^^^^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:73:1] + 73 | .unused-class.selector {} + : ^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:73:1] + 73 | .unused-class.selector {} + : ^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:73:1] + 73 | .unused-class.selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:73:1] + 73 | .unused-class.selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:73:1] + 73 | .unused-class.selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:73:1] + 73 | .unused-class.selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:75:1] + 75 | html > body .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^ + `---- + + x UniversalSelector + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^^^^^^^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:79:1] + 79 | *:first-child+html .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:80:1] + 80 | .selector, x:-IE7 {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^ + `---- + + x UniversalSelector + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:81:1] + 81 | *+html .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:82:1] + 82 | body*.selector {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:82:1] + 82 | body*.selector {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:82:1] + 82 | body*.selector {} + : ^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:82:1] + 82 | body*.selector {} + : ^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:82:1] + 82 | body*.selector {} + : ^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:82:1] + 82 | body*.selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:82:1] + 82 | body*.selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:82:1] + 82 | body*.selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:82:1] + 82 | body*.selector {} + : ^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:82:1] + 82 | body*.selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:82:1] + 82 | body*.selector {} + : ^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:82:1] + 82 | body*.selector {} + : ^ + `---- + + x UniversalSelector + ,-[$DIR/tests/recovery/hacks/input.css:82:1] + 82 | body*.selector {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:82:1] + 82 | body*.selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:82:1] + 82 | body*.selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:82:1] + 82 | body*.selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:82:1] + 82 | body*.selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:84:1] + 84 | .selector\ {} + : ^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:84:1] + 84 | .selector\ {} + : ^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:84:1] + 84 | .selector\ {} + : ^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:84:1] + 84 | .selector\ {} + : ^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:84:1] + 84 | .selector\ {} + : ^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:84:1] + 84 | .selector\ {} + : ^^^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:84:1] + 84 | .selector\ {} + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:84:1] + 84 | .selector\ {} + : ^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:84:1] + 84 | .selector\ {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:86:1] + 86 | html > /**/ body .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:87:1] + 87 | head ~ /**/ body .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^ + `---- + + x PseudoElementSelector + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x AttributeSelector + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^^^ + `---- + + x AttributeSelectorMatcher + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^ + `---- + + x AttributeSelectorValue + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^ + `---- + + x Str + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:89:1] + 89 | _::selection, .selector:not([attr*='']) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:91:1] + 91 | :root .selector {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:91:1] + 91 | :root .selector {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:91:1] + 91 | :root .selector {} + : ^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:91:1] + 91 | :root .selector {} + : ^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:91:1] + 91 | :root .selector {} + : ^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:91:1] + 91 | :root .selector {} + : ^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:91:1] + 91 | :root .selector {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:91:1] + 91 | :root .selector {} + : ^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:91:1] + 91 | :root .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:91:1] + 91 | :root .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:91:1] + 91 | :root .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:91:1] + 91 | :root .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:91:1] + 91 | :root .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:91:1] + 91 | :root .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^^^^^^^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:92:1] + 92 | body:last-child .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^^^^^^^^^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^ + `---- + + x AnPlusB + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^ + `---- + + x AnPlusBNotation + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:93:1] + 93 | body:nth-of-type(1) .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^^^^^^^^^^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:94:1] + 94 | body:first-of-type .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x AttributeSelector + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^^^^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^^^ + `---- + + x AttributeSelectorMatcher + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^ + `---- + + x AttributeSelectorValue + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^ + `---- + + x Str + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:95:1] + 95 | .selector:not([attr*='']) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:97:1] + 97 | .selector { _property: value; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:97:1] + 97 | .selector { _property: value; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:97:1] + 97 | .selector { _property: value; } + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:97:1] + 97 | .selector { _property: value; } + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:97:1] + 97 | .selector { _property: value; } + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:97:1] + 97 | .selector { _property: value; } + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:97:1] + 97 | .selector { _property: value; } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:97:1] + 97 | .selector { _property: value; } + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:97:1] + 97 | .selector { _property: value; } + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:97:1] + 97 | .selector { _property: value; } + : ^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:97:1] + 97 | .selector { _property: value; } + : ^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:97:1] + 97 | .selector { _property: value; } + : ^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:97:1] + 97 | .selector { _property: value; } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:97:1] + 97 | .selector { _property: value; } + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:97:1] + 97 | .selector { _property: value; } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:97:1] + 97 | .selector { _property: value; } + : ^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:98:1] + 98 | .selector { -property: value; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:98:1] + 98 | .selector { -property: value; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:98:1] + 98 | .selector { -property: value; } + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:98:1] + 98 | .selector { -property: value; } + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:98:1] + 98 | .selector { -property: value; } + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:98:1] + 98 | .selector { -property: value; } + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:98:1] + 98 | .selector { -property: value; } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:98:1] + 98 | .selector { -property: value; } + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:98:1] + 98 | .selector { -property: value; } + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:98:1] + 98 | .selector { -property: value; } + : ^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:98:1] + 98 | .selector { -property: value; } + : ^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:98:1] + 98 | .selector { -property: value; } + : ^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:98:1] + 98 | .selector { -property: value; } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:98:1] + 98 | .selector { -property: value; } + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:98:1] + 98 | .selector { -property: value; } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:98:1] + 98 | .selector { -property: value; } + : ^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:100:1] + 100 | .selector { property: value\9; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:100:1] + 100 | .selector { property: value\9; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:100:1] + 100 | .selector { property: value\9; } + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:100:1] + 100 | .selector { property: value\9; } + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:100:1] + 100 | .selector { property: value\9; } + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:100:1] + 100 | .selector { property: value\9; } + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:100:1] + 100 | .selector { property: value\9; } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:100:1] + 100 | .selector { property: value\9; } + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:100:1] + 100 | .selector { property: value\9; } + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:100:1] + 100 | .selector { property: value\9; } + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:100:1] + 100 | .selector { property: value\9; } + : ^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:100:1] + 100 | .selector { property: value\9; } + : ^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:100:1] + 100 | .selector { property: value\9; } + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:100:1] + 100 | .selector { property: value\9; } + : ^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:100:1] + 100 | .selector { property: value\9; } + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:100:1] + 100 | .selector { property: value\9; } + : ^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:101:1] + 101 | .selector { property/*\**/: value\9; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:101:1] + 101 | .selector { property/*\**/: value\9; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:101:1] + 101 | .selector { property/*\**/: value\9; } + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:101:1] + 101 | .selector { property/*\**/: value\9; } + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:101:1] + 101 | .selector { property/*\**/: value\9; } + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:101:1] + 101 | .selector { property/*\**/: value\9; } + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:101:1] + 101 | .selector { property/*\**/: value\9; } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:101:1] + 101 | .selector { property/*\**/: value\9; } + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:101:1] + 101 | .selector { property/*\**/: value\9; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:101:1] + 101 | .selector { property/*\**/: value\9; } + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:101:1] + 101 | .selector { property/*\**/: value\9; } + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:101:1] + 101 | .selector { property/*\**/: value\9; } + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:101:1] + 101 | .selector { property/*\**/: value\9; } + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:101:1] + 101 | .selector { property/*\**/: value\9; } + : ^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:101:1] + 101 | .selector { property/*\**/: value\9; } + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:101:1] + 101 | .selector { property/*\**/: value\9; } + : ^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:103:1] + 103 | ,-> .selector { + 104 | | !property: value; + 105 | | color: red; + 106 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:103:1] + 103 | ,-> .selector { + 104 | | !property: value; + 105 | | color: red; + 106 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:103:1] + 103 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:103:1] + 103 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:103:1] + 103 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:103:1] + 103 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:103:1] + 103 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:103:1] + 103 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:103:1] + 103 | ,-> .selector { + 104 | | !property: value; + 105 | | color: red; + 106 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:104:5] + 104 | !property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:104:5] + 104 | !property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:104:5] + 104 | !property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Delim { value: '!' } + ,-[$DIR/tests/recovery/hacks/input.css:104:5] + 104 | !property: value; + : ^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:104:5] + 104 | !property: value; + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:104:5] + 104 | !property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:104:5] + 104 | !property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:104:5] + 104 | !property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:104:5] + 104 | !property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:105:5] + 105 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:105:5] + 105 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:105:5] + 105 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:105:5] + 105 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:105:5] + 105 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:105:5] + 105 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:105:5] + 105 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:107:1] + 107 | ,-> .selector { + 108 | | $property: value; + 109 | | color: red; + 110 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:107:1] + 107 | ,-> .selector { + 108 | | $property: value; + 109 | | color: red; + 110 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:107:1] + 107 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:107:1] + 107 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:107:1] + 107 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:107:1] + 107 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:107:1] + 107 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:107:1] + 107 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:107:1] + 107 | ,-> .selector { + 108 | | $property: value; + 109 | | color: red; + 110 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:108:5] + 108 | $property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:108:5] + 108 | $property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:108:5] + 108 | $property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Delim { value: '$' } + ,-[$DIR/tests/recovery/hacks/input.css:108:5] + 108 | $property: value; + : ^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:108:5] + 108 | $property: value; + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:108:5] + 108 | $property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:108:5] + 108 | $property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:108:5] + 108 | $property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:108:5] + 108 | $property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:109:5] + 109 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:109:5] + 109 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:109:5] + 109 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:109:5] + 109 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:109:5] + 109 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:109:5] + 109 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:109:5] + 109 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:111:1] + 111 | ,-> .selector { + 112 | | &property: value; + 113 | | color: red; + 114 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:111:1] + 111 | ,-> .selector { + 112 | | &property: value; + 113 | | color: red; + 114 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:111:1] + 111 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:111:1] + 111 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:111:1] + 111 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:111:1] + 111 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:111:1] + 111 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:111:1] + 111 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:111:1] + 111 | ,-> .selector { + 112 | | &property: value; + 113 | | color: red; + 114 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:113:5] + 113 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:113:5] + 113 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:113:5] + 113 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:113:5] + 113 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:113:5] + 113 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:113:5] + 113 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:113:5] + 113 | color: red; + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:112:5] + 112 | &property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:112:5] + 112 | &property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:112:5] + 112 | &property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Delim { value: '&' } + ,-[$DIR/tests/recovery/hacks/input.css:112:5] + 112 | &property: value; + : ^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:112:5] + 112 | &property: value; + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:112:5] + 112 | &property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:112:5] + 112 | &property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:112:5] + 112 | &property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:112:5] + 112 | &property: value; + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:115:1] + 115 | ,-> .selector { + 116 | | *property: value; + 117 | | color: red; + 118 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:115:1] + 115 | ,-> .selector { + 116 | | *property: value; + 117 | | color: red; + 118 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:115:1] + 115 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:115:1] + 115 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:115:1] + 115 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:115:1] + 115 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:115:1] + 115 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:115:1] + 115 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:115:1] + 115 | ,-> .selector { + 116 | | *property: value; + 117 | | color: red; + 118 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:116:5] + 116 | *property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:116:5] + 116 | *property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:116:5] + 116 | *property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Delim { value: '*' } + ,-[$DIR/tests/recovery/hacks/input.css:116:5] + 116 | *property: value; + : ^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:116:5] + 116 | *property: value; + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:116:5] + 116 | *property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:116:5] + 116 | *property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:116:5] + 116 | *property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:116:5] + 116 | *property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:117:5] + 117 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:117:5] + 117 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:117:5] + 117 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:117:5] + 117 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:117:5] + 117 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:117:5] + 117 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:117:5] + 117 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:119:1] + 119 | ,-> .selector { + 120 | | )property: value; + 121 | | color: red; + 122 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:119:1] + 119 | ,-> .selector { + 120 | | )property: value; + 121 | | color: red; + 122 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:119:1] + 119 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:119:1] + 119 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:119:1] + 119 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:119:1] + 119 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:119:1] + 119 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:119:1] + 119 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:119:1] + 119 | ,-> .selector { + 120 | | )property: value; + 121 | | color: red; + 122 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:120:5] + 120 | )property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:120:5] + 120 | )property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:120:5] + 120 | )property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x RParen + ,-[$DIR/tests/recovery/hacks/input.css:120:5] + 120 | )property: value; + : ^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:120:5] + 120 | )property: value; + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:120:5] + 120 | )property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:120:5] + 120 | )property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:120:5] + 120 | )property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:120:5] + 120 | )property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:121:5] + 121 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:121:5] + 121 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:121:5] + 121 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:121:5] + 121 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:121:5] + 121 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:121:5] + 121 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:121:5] + 121 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:123:1] + 123 | ,-> .selector { + 124 | | =property: value; + 125 | | color: red; + 126 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:123:1] + 123 | ,-> .selector { + 124 | | =property: value; + 125 | | color: red; + 126 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:123:1] + 123 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:123:1] + 123 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:123:1] + 123 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:123:1] + 123 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:123:1] + 123 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:123:1] + 123 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:123:1] + 123 | ,-> .selector { + 124 | | =property: value; + 125 | | color: red; + 126 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:124:5] + 124 | =property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:124:5] + 124 | =property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:124:5] + 124 | =property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/hacks/input.css:124:5] + 124 | =property: value; + : ^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:124:5] + 124 | =property: value; + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:124:5] + 124 | =property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:124:5] + 124 | =property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:124:5] + 124 | =property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:124:5] + 124 | =property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:125:5] + 125 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:125:5] + 125 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:125:5] + 125 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:125:5] + 125 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:125:5] + 125 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:125:5] + 125 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:125:5] + 125 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:127:1] + 127 | ,-> .selector { + 128 | | %property: value; + 129 | | color: red; + 130 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:127:1] + 127 | ,-> .selector { + 128 | | %property: value; + 129 | | color: red; + 130 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:127:1] + 127 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:127:1] + 127 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:127:1] + 127 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:127:1] + 127 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:127:1] + 127 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:127:1] + 127 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:127:1] + 127 | ,-> .selector { + 128 | | %property: value; + 129 | | color: red; + 130 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:128:5] + 128 | %property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:128:5] + 128 | %property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:128:5] + 128 | %property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Delim { value: '%' } + ,-[$DIR/tests/recovery/hacks/input.css:128:5] + 128 | %property: value; + : ^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:128:5] + 128 | %property: value; + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:128:5] + 128 | %property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:128:5] + 128 | %property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:128:5] + 128 | %property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:128:5] + 128 | %property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:129:5] + 129 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:129:5] + 129 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:129:5] + 129 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:129:5] + 129 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:129:5] + 129 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:129:5] + 129 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:129:5] + 129 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:131:1] + 131 | ,-> .selector { + 132 | | +property: value; + 133 | | color: red; + 134 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:131:1] + 131 | ,-> .selector { + 132 | | +property: value; + 133 | | color: red; + 134 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:131:1] + 131 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:131:1] + 131 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:131:1] + 131 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:131:1] + 131 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:131:1] + 131 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:131:1] + 131 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:131:1] + 131 | ,-> .selector { + 132 | | +property: value; + 133 | | color: red; + 134 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:132:5] + 132 | +property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:132:5] + 132 | +property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:132:5] + 132 | +property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Delim { value: '+' } + ,-[$DIR/tests/recovery/hacks/input.css:132:5] + 132 | +property: value; + : ^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:132:5] + 132 | +property: value; + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:132:5] + 132 | +property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:132:5] + 132 | +property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:132:5] + 132 | +property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:132:5] + 132 | +property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:133:5] + 133 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:133:5] + 133 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:133:5] + 133 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:133:5] + 133 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:133:5] + 133 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:133:5] + 133 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:133:5] + 133 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:135:1] + 135 | ,-> .selector { + 136 | | @property: value; + 137 | | color: red; + 138 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:135:1] + 135 | ,-> .selector { + 136 | | @property: value; + 137 | | color: red; + 138 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:135:1] + 135 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:135:1] + 135 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:135:1] + 135 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:135:1] + 135 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:135:1] + 135 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:135:1] + 135 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:135:1] + 135 | ,-> .selector { + 136 | | @property: value; + 137 | | color: red; + 138 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:137:5] + 137 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:137:5] + 137 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:137:5] + 137 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:137:5] + 137 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:137:5] + 137 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:137:5] + 137 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:137:5] + 137 | color: red; + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:136:5] + 136 | @property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:136:5] + 136 | @property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:136:5] + 136 | @property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:136:5] + 136 | @property: value; + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:136:5] + 136 | @property: value; + : ^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:136:5] + 136 | @property: value; + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:136:5] + 136 | @property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:136:5] + 136 | @property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:136:5] + 136 | @property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:136:5] + 136 | @property: value; + : ^^^^^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:136:5] + 136 | @property: value; + : ^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:139:1] + 139 | ,-> .selector { + 140 | | ,property: value; + 141 | | color: red; + 142 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:139:1] + 139 | ,-> .selector { + 140 | | ,property: value; + 141 | | color: red; + 142 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:139:1] + 139 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:139:1] + 139 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:139:1] + 139 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:139:1] + 139 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:139:1] + 139 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:139:1] + 139 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:139:1] + 139 | ,-> .selector { + 140 | | ,property: value; + 141 | | color: red; + 142 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:140:5] + 140 | ,property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:140:5] + 140 | ,property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:140:5] + 140 | ,property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Comma + ,-[$DIR/tests/recovery/hacks/input.css:140:5] + 140 | ,property: value; + : ^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:140:5] + 140 | ,property: value; + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:140:5] + 140 | ,property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:140:5] + 140 | ,property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:140:5] + 140 | ,property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:140:5] + 140 | ,property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:141:5] + 141 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:141:5] + 141 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:141:5] + 141 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:141:5] + 141 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:141:5] + 141 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:141:5] + 141 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:141:5] + 141 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:143:1] + 143 | ,-> .selector { + 144 | | .property: value; + 145 | | color: red; + 146 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:143:1] + 143 | ,-> .selector { + 144 | | .property: value; + 145 | | color: red; + 146 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:143:1] + 143 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:143:1] + 143 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:143:1] + 143 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:143:1] + 143 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:143:1] + 143 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:143:1] + 143 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:143:1] + 143 | ,-> .selector { + 144 | | .property: value; + 145 | | color: red; + 146 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:144:5] + 144 | .property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:144:5] + 144 | .property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:144:5] + 144 | .property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/hacks/input.css:144:5] + 144 | .property: value; + : ^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:144:5] + 144 | .property: value; + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:144:5] + 144 | .property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:144:5] + 144 | .property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:144:5] + 144 | .property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:144:5] + 144 | .property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:145:5] + 145 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:145:5] + 145 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:145:5] + 145 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:145:5] + 145 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:145:5] + 145 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:145:5] + 145 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:145:5] + 145 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:147:1] + 147 | ,-> .selector { + 148 | | /property: value; + 149 | | color: red; + 150 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:147:1] + 147 | ,-> .selector { + 148 | | /property: value; + 149 | | color: red; + 150 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:147:1] + 147 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:147:1] + 147 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:147:1] + 147 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:147:1] + 147 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:147:1] + 147 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:147:1] + 147 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:147:1] + 147 | ,-> .selector { + 148 | | /property: value; + 149 | | color: red; + 150 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:148:5] + 148 | /property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:148:5] + 148 | /property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:148:5] + 148 | /property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/recovery/hacks/input.css:148:5] + 148 | /property: value; + : ^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:148:5] + 148 | /property: value; + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:148:5] + 148 | /property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:148:5] + 148 | /property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:148:5] + 148 | /property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:148:5] + 148 | /property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:149:5] + 149 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:149:5] + 149 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:149:5] + 149 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:149:5] + 149 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:149:5] + 149 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:149:5] + 149 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:149:5] + 149 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:151:1] + 151 | ,-> .selector { + 152 | | `property: value; + 153 | | color: red; + 154 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:151:1] + 151 | ,-> .selector { + 152 | | `property: value; + 153 | | color: red; + 154 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:151:1] + 151 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:151:1] + 151 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:151:1] + 151 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:151:1] + 151 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:151:1] + 151 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:151:1] + 151 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:151:1] + 151 | ,-> .selector { + 152 | | `property: value; + 153 | | color: red; + 154 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:152:5] + 152 | `property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:152:5] + 152 | `property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:152:5] + 152 | `property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Delim { value: '`' } + ,-[$DIR/tests/recovery/hacks/input.css:152:5] + 152 | `property: value; + : ^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:152:5] + 152 | `property: value; + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:152:5] + 152 | `property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:152:5] + 152 | `property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:152:5] + 152 | `property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:152:5] + 152 | `property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:153:5] + 153 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:153:5] + 153 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:153:5] + 153 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:153:5] + 153 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:153:5] + 153 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:153:5] + 153 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:153:5] + 153 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:155:1] + 155 | ,-> .selector { + 156 | | ]property: value; + 157 | | color: red; + 158 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:155:1] + 155 | ,-> .selector { + 156 | | ]property: value; + 157 | | color: red; + 158 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:155:1] + 155 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:155:1] + 155 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:155:1] + 155 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:155:1] + 155 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:155:1] + 155 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:155:1] + 155 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:155:1] + 155 | ,-> .selector { + 156 | | ]property: value; + 157 | | color: red; + 158 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:156:5] + 156 | ]property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:156:5] + 156 | ]property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:156:5] + 156 | ]property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x RBracket + ,-[$DIR/tests/recovery/hacks/input.css:156:5] + 156 | ]property: value; + : ^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:156:5] + 156 | ]property: value; + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:156:5] + 156 | ]property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:156:5] + 156 | ]property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:156:5] + 156 | ]property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:156:5] + 156 | ]property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:157:5] + 157 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:157:5] + 157 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:157:5] + 157 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:157:5] + 157 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:157:5] + 157 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:157:5] + 157 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:157:5] + 157 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:159:1] + 159 | ,-> .selector { + 160 | | #property: value; + 161 | | color: red; + 162 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:159:1] + 159 | ,-> .selector { + 160 | | #property: value; + 161 | | color: red; + 162 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:159:1] + 159 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:159:1] + 159 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:159:1] + 159 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:159:1] + 159 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:159:1] + 159 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:159:1] + 159 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:159:1] + 159 | ,-> .selector { + 160 | | #property: value; + 161 | | color: red; + 162 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:160:5] + 160 | #property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:160:5] + 160 | #property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:160:5] + 160 | #property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Hash { is_id: true, value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:160:5] + 160 | #property: value; + : ^^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:160:5] + 160 | #property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:160:5] + 160 | #property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:160:5] + 160 | #property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:160:5] + 160 | #property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:161:5] + 161 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:161:5] + 161 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:161:5] + 161 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:161:5] + 161 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:161:5] + 161 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:161:5] + 161 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:161:5] + 161 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:163:1] + 163 | ,-> .selector { + 164 | | ~property: value; + 165 | | color: red; + 166 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:163:1] + 163 | ,-> .selector { + 164 | | ~property: value; + 165 | | color: red; + 166 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:163:1] + 163 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:163:1] + 163 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:163:1] + 163 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:163:1] + 163 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:163:1] + 163 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:163:1] + 163 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:163:1] + 163 | ,-> .selector { + 164 | | ~property: value; + 165 | | color: red; + 166 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:164:5] + 164 | ~property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:164:5] + 164 | ~property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:164:5] + 164 | ~property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Delim { value: '~' } + ,-[$DIR/tests/recovery/hacks/input.css:164:5] + 164 | ~property: value; + : ^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:164:5] + 164 | ~property: value; + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:164:5] + 164 | ~property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:164:5] + 164 | ~property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:164:5] + 164 | ~property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:164:5] + 164 | ~property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:165:5] + 165 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:165:5] + 165 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:165:5] + 165 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:165:5] + 165 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:165:5] + 165 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:165:5] + 165 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:165:5] + 165 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:167:1] + 167 | ,-> .selector { + 168 | | ?property: value; + 169 | | color: red; + 170 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:167:1] + 167 | ,-> .selector { + 168 | | ?property: value; + 169 | | color: red; + 170 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:167:1] + 167 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:167:1] + 167 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:167:1] + 167 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:167:1] + 167 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:167:1] + 167 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:167:1] + 167 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:167:1] + 167 | ,-> .selector { + 168 | | ?property: value; + 169 | | color: red; + 170 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:168:5] + 168 | ?property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:168:5] + 168 | ?property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:168:5] + 168 | ?property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Delim { value: '?' } + ,-[$DIR/tests/recovery/hacks/input.css:168:5] + 168 | ?property: value; + : ^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:168:5] + 168 | ?property: value; + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:168:5] + 168 | ?property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:168:5] + 168 | ?property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:168:5] + 168 | ?property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:168:5] + 168 | ?property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:169:5] + 169 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:169:5] + 169 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:169:5] + 169 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:169:5] + 169 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:169:5] + 169 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:169:5] + 169 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:169:5] + 169 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:171:1] + 171 | ,-> .selector { + 172 | | :property: value; + 173 | | color: red; + 174 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:171:1] + 171 | ,-> .selector { + 172 | | :property: value; + 173 | | color: red; + 174 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:171:1] + 171 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:171:1] + 171 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:171:1] + 171 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:171:1] + 171 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:171:1] + 171 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:171:1] + 171 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:171:1] + 171 | ,-> .selector { + 172 | | :property: value; + 173 | | color: red; + 174 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:172:5] + 172 | :property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:172:5] + 172 | :property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:172:5] + 172 | :property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:172:5] + 172 | :property: value; + : ^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:172:5] + 172 | :property: value; + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:172:5] + 172 | :property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:172:5] + 172 | :property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:172:5] + 172 | :property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:172:5] + 172 | :property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:173:5] + 173 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:173:5] + 173 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:173:5] + 173 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:173:5] + 173 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:173:5] + 173 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:173:5] + 173 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:173:5] + 173 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:175:1] + 175 | ,-> .selector { + 176 | | |property: value; + 177 | | color: red; + 178 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:175:1] + 175 | ,-> .selector { + 176 | | |property: value; + 177 | | color: red; + 178 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:175:1] + 175 | .selector { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:175:1] + 175 | .selector { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:175:1] + 175 | .selector { + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:175:1] + 175 | .selector { + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:175:1] + 175 | .selector { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:175:1] + 175 | .selector { + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:175:1] + 175 | ,-> .selector { + 176 | | |property: value; + 177 | | color: red; + 178 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:176:5] + 176 | |property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:176:5] + 176 | |property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:176:5] + 176 | |property: value; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Delim { value: '|' } + ,-[$DIR/tests/recovery/hacks/input.css:176:5] + 176 | |property: value; + : ^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:176:5] + 176 | |property: value; + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:176:5] + 176 | |property: value; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:176:5] + 176 | |property: value; + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:176:5] + 176 | |property: value; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:176:5] + 176 | |property: value; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:177:5] + 177 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:177:5] + 177 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:177:5] + 177 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:177:5] + 177 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:177:5] + 177 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:177:5] + 177 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:177:5] + 177 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident { value: Atom('property' type=dynamic), raw: Atom('property' type=dynamic) } + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^ + `---- + + x Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^ + `---- + + x Delim { value: '!' } + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^ + `---- + + x Ident { value: Atom('ie' type=inline), raw: Atom('ie' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:180:1] + 180 | .selector { property: value !ie; } + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:182:1] + 182 | @media screen\9 {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:182:1] + 182 | @media screen\9 {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:182:1] + 182 | @media screen\9 {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:182:1] + 182 | @media screen\9 {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:182:1] + 182 | @media screen\9 {} + : ^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:182:1] + 182 | @media screen\9 {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:182:1] + 182 | @media screen\9 {} + : ^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:182:1] + 182 | @media screen\9 {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:184:1] + 184 | @media \0screen\,screen\9 {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:184:1] + 184 | @media \0screen\,screen\9 {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:184:1] + 184 | @media \0screen\,screen\9 {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:184:1] + 184 | @media \0screen\,screen\9 {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:184:1] + 184 | @media \0screen\,screen\9 {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:184:1] + 184 | @media \0screen\,screen\9 {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:184:1] + 184 | @media \0screen\,screen\9 {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:184:1] + 184 | @media \0screen\,screen\9 {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:186:1] + 186 | @media \0screen {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:186:1] + 186 | @media \0screen {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:186:1] + 186 | @media \0screen {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:186:1] + 186 | @media \0screen {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:186:1] + 186 | @media \0screen {} + : ^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:186:1] + 186 | @media \0screen {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:186:1] + 186 | @media \0screen {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:186:1] + 186 | @media \0screen {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^ + `---- + + x MediaConditionWithoutOr + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^ + `---- + + x UnknownDimension + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:188:1] + 188 | @media screen and (min-width:0\0) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:190:1] + 190 | _:-ms-input-placeholder, :root .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:192:1] + 192 | _:-ms-fullscreen, :root .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^ + `---- + + x MediaConditionWithoutOr + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaCondition + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionAllType + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:194:1] + 194 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaCondition + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionAllType + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:196:1] + 196 | @media screen { @media (min-width: 0px) {} } + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^ + `---- + + x UniversalSelector + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:200:1] + 200 | .selector:not(*:root) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:202:1] + 202 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:202:1] + 202 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:202:1] + 202 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:202:1] + 202 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^ + `---- + + x SupportsCondition + ,-[$DIR/tests/recovery/hacks/input.css:202:1] + 202 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:202:1] + 202 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:202:1] + 202 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:202:1] + 202 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:202:1] + 202 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:202:1] + 202 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:202:1] + 202 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:202:1] + 202 | @supports (-webkit-appearance:none) {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:202:1] + 202 | @supports (-webkit-appearance:none) {} + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:202:1] + 202 | @supports (-webkit-appearance:none) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^ + `---- + + x LParen + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^^ + `---- + + x RParen + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:204:1] + 204 | .selector { (;property: value;); } + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^ + `---- + + x LBracket + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^^ + `---- + + x RBracket + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:205:1] + 205 | .selector { [;property: value;]; } + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^^^^^^^^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:207:1] + 207 | html:first-child .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^^^^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:209:1] + 209 | _:-o-prefocus, body:last-child .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^ + `---- + + x MediaConditionWithoutOr + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^ + `---- + + x MediaConditionWithoutOr + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:211:1] + 211 | @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaCondition + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionAllType + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^ + `---- + + x Resolution + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:213:1] + 213 | @media (min-resolution: .001dpcm) { _:-o-prefocus, .selector {} } + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^^^^^ + `---- + + x NsPrefix + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^^^ + `---- + + x AttributeSelector + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^^^^ + `---- + + x AttributeSelectorMatcher + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^ + `---- + + x AttributeSelectorValue + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^ + `---- + + x Str + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:215:1] + 215 | *|html[xmlns*=""] .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^ + `---- + + x MediaConditionWithoutOr + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaAnd + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^ + `---- + + x Resolution + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:217:1] + 217 | @media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { .selector {} } + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^ + `---- + + x UniversalSelector + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:221:1] + 221 | .selector:not(*:root) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:223:1] + 223 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:223:1] + 223 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:223:1] + 223 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:223:1] + 223 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^ + `---- + + x SupportsCondition + ,-[$DIR/tests/recovery/hacks/input.css:223:1] + 223 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/hacks/input.css:223:1] + 223 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/hacks/input.css:223:1] + 223 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/hacks/input.css:223:1] + 223 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:223:1] + 223 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:223:1] + 223 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:223:1] + 223 | @supports (-webkit-appearance:none) {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:223:1] + 223 | @supports (-webkit-appearance:none) {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:223:1] + 223 | @supports (-webkit-appearance:none) {} + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:223:1] + 223 | @supports (-webkit-appearance:none) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^ + `---- + + x LParen + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^^ + `---- + + x RParen + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:225:1] + 225 | .selector { (;property: value;); } + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^ + `---- + + x LBracket + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^^ + `---- + + x RBracket + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:226:1] + 226 | .selector { [;property: value;]; } + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^ + `---- + + x MediaConditionWithoutOr + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^ + `---- + + x MediaConditionWithoutOrType + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^ + `---- + + x UnknownDimension + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:228:1] + 228 | @media screen and (min-width:0\0) {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaCondition + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionAllType + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:230:1] + 230 | @media screen { @media (min-width: 0px) {} } + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^^^^^^^^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:232:1] + 232 | html:first-child .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^^^^^^^^ + `---- + + x AttributeSelector + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^^^^^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^^ + `---- + + x AttributeSelectorMatcher + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^ + `---- + + x AttributeSelectorValue + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^ + `---- + + x Str + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^^^^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:234:1] + 234 | html[xmlns*=""] body:last-child .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^^^^^^^^ + `---- + + x AttributeSelector + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^^^^^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^^ + `---- + + x AttributeSelectorMatcher + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^ + `---- + + x AttributeSelectorValue + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^ + `---- + + x Str + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:235:1] + 235 | html[xmlns*=""]:root .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^^^^^ + `---- + + x NsPrefix + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^^^ + `---- + + x AttributeSelector + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^^^^ + `---- + + x AttributeSelectorMatcher + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^ + `---- + + x AttributeSelectorValue + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^ + `---- + + x Str + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:237:1] + 237 | *|html[xmlns*=""] .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x PseudoElementSelector + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:239:1] + 239 | _::-moz-svg-foreign-content, :root .selector {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:241:1] + 241 | @media \\0 screen {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRule + ,-[$DIR/tests/recovery/hacks/input.css:241:1] + 241 | @media \\0 screen {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/hacks/input.css:241:1] + 241 | @media \\0 screen {} + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:241:1] + 241 | @media \\0 screen {} + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/hacks/input.css:241:1] + 241 | @media \\0 screen {} + : ^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/hacks/input.css:241:1] + 241 | @media \\0 screen {} + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:241:1] + 241 | @media \\0 screen {} + : ^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:241:1] + 241 | @media \\0 screen {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:243:1] + 243 | ,-> a { + 244 | | *color : black; + 245 | | _background: white; + 246 | | font-size/**/: big; + 247 | | $(var)-size: 100%; + 248 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:243:1] + 243 | ,-> a { + 244 | | *color : black; + 245 | | _background: white; + 246 | | font-size/**/: big; + 247 | | $(var)-size: 100%; + 248 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:243:1] + 243 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:243:1] + 243 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:243:1] + 243 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:243:1] + 243 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:243:1] + 243 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:243:1] + 243 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:243:1] + 243 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:243:1] + 243 | ,-> a { + 244 | | *color : black; + 245 | | _background: white; + 246 | | font-size/**/: big; + 247 | | $(var)-size: 100%; + 248 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:244:5] + 244 | *color : black; + : ^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:244:5] + 244 | *color : black; + : ^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:244:5] + 244 | *color : black; + : ^^^^^^^^^^^^^^^ + `---- + + x Delim { value: '*' } + ,-[$DIR/tests/recovery/hacks/input.css:244:5] + 244 | *color : black; + : ^ + `---- + + x Ident { value: Atom('color' type=inline), raw: Atom('color' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:244:5] + 244 | *color : black; + : ^^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:244:5] + 244 | *color : black; + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:244:5] + 244 | *color : black; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:244:5] + 244 | *color : black; + : ^ + `---- + + x Ident { value: Atom('black' type=inline), raw: Atom('black' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:244:5] + 244 | *color : black; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:244:5] + 244 | *color : black; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:245:5] + 245 | _background: white; + : ^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:245:5] + 245 | _background: white; + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:245:5] + 245 | _background: white; + : ^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:245:5] + 245 | _background: white; + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:245:5] + 245 | _background: white; + : ^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:245:5] + 245 | _background: white; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:245:5] + 245 | _background: white; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:246:5] + 246 | font-size/**/: big; + : ^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:246:5] + 246 | font-size/**/: big; + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:246:5] + 246 | font-size/**/: big; + : ^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:246:5] + 246 | font-size/**/: big; + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:246:5] + 246 | font-size/**/: big; + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:246:5] + 246 | font-size/**/: big; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:246:5] + 246 | font-size/**/: big; + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:247:5] + 247 | $(var)-size: 100%; + : ^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:247:5] + 247 | $(var)-size: 100%; + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:247:5] + 247 | $(var)-size: 100%; + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Delim { value: '$' } + ,-[$DIR/tests/recovery/hacks/input.css:247:5] + 247 | $(var)-size: 100%; + : ^ + `---- + + x LParen + ,-[$DIR/tests/recovery/hacks/input.css:247:5] + 247 | $(var)-size: 100%; + : ^ + `---- + + x Ident { value: Atom('var' type=static), raw: Atom('var' type=static) } + ,-[$DIR/tests/recovery/hacks/input.css:247:5] + 247 | $(var)-size: 100%; + : ^^^ + `---- + + x RParen + ,-[$DIR/tests/recovery/hacks/input.css:247:5] + 247 | $(var)-size: 100%; + : ^ + `---- + + x Ident { value: Atom('-size' type=inline), raw: Atom('-size' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:247:5] + 247 | $(var)-size: 100%; + : ^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:247:5] + 247 | $(var)-size: 100%; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:247:5] + 247 | $(var)-size: 100%; + : ^ + `---- + + x Percentage { value: 100.0, raw: Atom('100' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:247:5] + 247 | $(var)-size: 100%; + : ^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/hacks/input.css:247:5] + 247 | $(var)-size: 100%; + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:250:1] + 250 | a{*b:c} + : ^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:250:1] + 250 | a{*b:c} + : ^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:250:1] + 250 | a{*b:c} + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:250:1] + 250 | a{*b:c} + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:250:1] + 250 | a{*b:c} + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:250:1] + 250 | a{*b:c} + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:250:1] + 250 | a{*b:c} + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:250:1] + 250 | a{*b:c} + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:250:1] + 250 | a{*b:c} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:250:1] + 250 | a{*b:c} + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:250:1] + 250 | a{*b:c} + : ^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:250:1] + 250 | a{*b:c} + : ^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/hacks/input.css:250:1] + 250 | a{*b:c} + : ^^^^ + `---- + + x Delim { value: '*' } + ,-[$DIR/tests/recovery/hacks/input.css:250:1] + 250 | a{*b:c} + : ^ + `---- + + x Ident { value: Atom('b' type=inline), raw: Atom('b' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:250:1] + 250 | a{*b:c} + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/hacks/input.css:250:1] + 250 | a{*b:c} + : ^ + `---- + + x Ident { value: Atom('c' type=inline), raw: Atom('c' type=inline) } + ,-[$DIR/tests/recovery/hacks/input.css:250:1] + 250 | a{*b:c} + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:252:1] + 252 | ,-> div { + 253 | | color: red; + 254 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:252:1] + 252 | ,-> div { + 253 | | color: red; + 254 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:252:1] + 252 | div { + : ^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:252:1] + 252 | div { + : ^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:252:1] + 252 | div { + : ^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:252:1] + 252 | div { + : ^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:252:1] + 252 | div { + : ^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:252:1] + 252 | div { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:252:1] + 252 | div { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:252:1] + 252 | ,-> div { + 253 | | color: red; + 254 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:253:5] + 253 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:253:5] + 253 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:253:5] + 253 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:253:5] + 253 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:253:5] + 253 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:253:5] + 253 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:253:5] + 253 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:257:1] + 257 | selector { property:value; p\roperty: normal-value; } + : ^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/hacks/input.css:260:1] + 260 | ,-> div { + 261 | | color: red; + 262 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/hacks/input.css:260:1] + 260 | ,-> div { + 261 | | color: red; + 262 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/hacks/input.css:260:1] + 260 | div { + : ^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/hacks/input.css:260:1] + 260 | div { + : ^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/hacks/input.css:260:1] + 260 | div { + : ^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/hacks/input.css:260:1] + 260 | div { + : ^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/hacks/input.css:260:1] + 260 | div { + : ^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/hacks/input.css:260:1] + 260 | div { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:260:1] + 260 | div { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/hacks/input.css:260:1] + 260 | ,-> div { + 261 | | color: red; + 262 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:261:5] + 261 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/hacks/input.css:261:5] + 261 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/hacks/input.css:261:5] + 261 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/hacks/input.css:261:5] + 261 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:261:5] + 261 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/hacks/input.css:261:5] + 261 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/hacks/input.css:261:5] + 261 | color: red; + : ^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/ie-progid/span.rust-debug b/crates/swc_css_parser/tests/recovery/ie-progid/span.rust-debug new file mode 100644 index 00000000000..e5b116777ae --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/ie-progid/span.rust-debug @@ -0,0 +1,608 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/ie-progid/input.css:1:1] + 1 | ,-> a { + 2 | | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + 3 | | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + 4 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/ie-progid/input.css:1:1] + 1 | ,-> a { + 2 | | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + 3 | | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + 4 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/ie-progid/input.css:1:1] + 1 | ,-> a { + 2 | | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + 3 | | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + 4 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/ie-progid/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/ie-progid/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/ie-progid/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/ie-progid/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/ie-progid/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/ie-progid/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/ie-progid/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/ie-progid/input.css:1:1] + 1 | ,-> a { + 2 | | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + 3 | | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^^^^^ + `---- + + x Ident { value: Atom('startColorstr' type=dynamic), raw: Atom('startColorstr' type=dynamic) } + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^ + `---- + + x String { value: Atom('#4f4f4f' type=inline), raw: Atom(''#4f4f4f'' type=dynamic) } + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x Comma + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^^^ + `---- + + x Ident { value: Atom('endColorstr' type=dynamic), raw: Atom('endColorstr' type=dynamic) } + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^ + `---- + + x String { value: Atom('#292929' type=inline), raw: Atom(''#292929'' type=dynamic) } + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x Comma + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^^^^ + `---- + + x Ident { value: Atom('GradientType' type=dynamic), raw: Atom('GradientType' type=dynamic) } + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x Number { value: 0.0, raw: Atom('0' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/ie-progid/input.css:2:5] + 2 | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4f4f4f',endColorstr='#292929',GradientType=0); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^^^^ + `---- + + x Ident { value: Atom('pixelradius' type=dynamic), raw: Atom('pixelradius' type=dynamic) } + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x Number { value: 2.0, raw: Atom('2' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^ + `---- + + x Ident { value: Atom('duration' type=dynamic), raw: Atom('duration' type=dynamic) } + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- + + x Number { value: 3.0, raw: Atom('3' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/ie-progid/input.css:3:5] + 3 | filter: progid:DXImageTransform.Microsoft.Blur(pixelradius=2) progid:DXImageTransform.Microsoft.Wheel(duration=3); + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/number/span.rust-debug b/crates/swc_css_parser/tests/recovery/number/span.rust-debug new file mode 100644 index 00000000000..9e16575fe63 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/number/span.rust-debug @@ -0,0 +1,274 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/number/input.css:1:1] + 1 | ,-> a { + 2 | | prop: 10.10px + 3 | | prop1: 10px + 4 | | prop2: 10 + 5 | | prop3: 10.10 + 6 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/number/input.css:1:1] + 1 | ,-> a { + 2 | | prop: 10.10px + 3 | | prop1: 10px + 4 | | prop2: 10 + 5 | | prop3: 10.10 + 6 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/number/input.css:1:1] + 1 | ,-> a { + 2 | | prop: 10.10px + 3 | | prop1: 10px + 4 | | prop2: 10 + 5 | | prop3: 10.10 + 6 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/number/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/number/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/number/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/number/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/number/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/number/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/number/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/number/input.css:1:1] + 1 | ,-> a { + 2 | | prop: 10.10px + 3 | | prop1: 10px + 4 | | prop2: 10 + 5 | | prop3: 10.10 + 6 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/number/input.css:2:5] + 2 | ,-> prop: 10.10px + 3 | | prop1: 10px + 4 | | prop2: 10 + 5 | `-> prop3: 10.10 + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/number/input.css:2:5] + 2 | ,-> prop: 10.10px + 3 | | prop1: 10px + 4 | | prop2: 10 + 5 | `-> prop3: 10.10 + `---- + + x Declaration + ,-[$DIR/tests/recovery/number/input.css:2:5] + 2 | ,-> prop: 10.10px + 3 | | prop1: 10px + 4 | | prop2: 10 + 5 | `-> prop3: 10.10 + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/number/input.css:2:5] + 2 | prop: 10.10px + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/number/input.css:2:5] + 2 | prop: 10.10px + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/number/input.css:2:5] + 2 | prop: 10.10px + : ^^^^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/number/input.css:2:5] + 2 | prop: 10.10px + : ^^^^^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/number/input.css:2:5] + 2 | prop: 10.10px + : ^^^^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/number/input.css:2:5] + 2 | prop: 10.10px + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/number/input.css:2:5] + 2 | prop: 10.10px + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/number/input.css:3:5] + 3 | prop1: 10px + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/number/input.css:3:5] + 3 | prop1: 10px + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/number/input.css:3:5] + 3 | prop1: 10px + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/number/input.css:3:5] + 3 | prop1: 10px + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/number/input.css:3:5] + 3 | prop1: 10px + : ^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/number/input.css:3:5] + 3 | prop1: 10px + : ^^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/number/input.css:3:5] + 3 | prop1: 10px + : ^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/number/input.css:3:5] + 3 | prop1: 10px + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/number/input.css:3:5] + 3 | prop1: 10px + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/number/input.css:4:5] + 4 | prop2: 10 + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/number/input.css:4:5] + 4 | prop2: 10 + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/number/input.css:4:5] + 4 | prop2: 10 + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/number/input.css:4:5] + 4 | prop2: 10 + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/number/input.css:4:5] + 4 | prop2: 10 + : ^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/number/input.css:4:5] + 4 | prop2: 10 + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/number/input.css:5:5] + 5 | prop3: 10.10 + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/number/input.css:5:5] + 5 | prop3: 10.10 + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/number/input.css:5:5] + 5 | prop3: 10.10 + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/number/input.css:5:5] + 5 | prop3: 10.10 + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/number/input.css:5:5] + 5 | prop3: 10.10 + : ^^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/number/input.css:5:5] + 5 | prop3: 10.10 + : ^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/qualified-rule/basic/span.rust-debug b/crates/swc_css_parser/tests/recovery/qualified-rule/basic/span.rust-debug new file mode 100644 index 00000000000..7bd580f2917 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/qualified-rule/basic/span.rust-debug @@ -0,0 +1,128 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:1:1] + 1 | ,-> // test + 2 | | + 3 | | a { + 4 | | color: red; + 5 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:1:1] + 1 | ,-> // test + 2 | | + 3 | | a { + 4 | | color: red; + 5 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:1:1] + 1 | ,-> // test + 2 | | + 3 | | a { + 4 | | color: red; + 5 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:1:1] + 1 | ,-> // test + 2 | | + 3 | `-> a { + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:1:1] + 1 | // test + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:1:1] + 1 | // test + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:1:1] + 1 | // test + : ^ + `---- + + x Ident { value: Atom('test' type=inline), raw: Atom('test' type=inline) } + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:1:1] + 1 | // test + : ^^^^ + `---- + + x WhiteSpace { value: Atom(' + | + | ' type=inline) } + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:1:1] + 1 | ,-> // test + 2 | `-> + 3 | a { + `---- + + x Ident { value: Atom('a' type=inline), raw: Atom('a' type=inline) } + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:3:1] + 3 | a { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:3:1] + 3 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:3:1] + 3 | ,-> a { + 4 | | color: red; + 5 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:4:5] + 4 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:4:5] + 4 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:4:5] + 4 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/qualified-rule/basic/input.css:4:5] + 4 | color: red; + : ^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/qualified-rule/broken/span.rust-debug b/crates/swc_css_parser/tests/recovery/qualified-rule/broken/span.rust-debug new file mode 100644 index 00000000000..6581088002c --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/qualified-rule/broken/span.rust-debug @@ -0,0 +1,114 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:1:1] + 1 | ,-> foo + 2 | | + 3 | | { + 4 | `-> color: red; + `---- + + x Rule + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:1:1] + 1 | ,-> foo + 2 | | + 3 | | { + 4 | `-> color: red; + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:1:1] + 1 | ,-> foo + 2 | | + 3 | | { + 4 | `-> color: red; + `---- + + x SelectorList + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:1:1] + 1 | foo + : ^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:1:1] + 1 | foo + : ^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:1:1] + 1 | foo + : ^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:1:1] + 1 | foo + : ^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:1:1] + 1 | foo + : ^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:1:1] + 1 | foo + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:1:1] + 1 | foo + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:3:1] + 3 | ,-> { + 4 | `-> color: red; + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:4:5] + 4 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:4:5] + 4 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:4:5] + 4 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/qualified-rule/broken/input.css:4:5] + 4 | color: red; + : ^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/qualified-rule/double-slash-comment/span.rust-debug b/crates/swc_css_parser/tests/recovery/qualified-rule/double-slash-comment/span.rust-debug new file mode 100644 index 00000000000..ca6a2d4ebee --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/qualified-rule/double-slash-comment/span.rust-debug @@ -0,0 +1,123 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:1:1] + 1 | ,-> // test + 2 | | a { + 3 | | color: red; + 4 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:1:1] + 1 | ,-> // test + 2 | | a { + 3 | | color: red; + 4 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:1:1] + 1 | ,-> // test + 2 | | a { + 3 | | color: red; + 4 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:1:1] + 1 | ,-> // test + 2 | `-> a { + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:1:1] + 1 | // test + : ^ + `---- + + x Delim { value: '/' } + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:1:1] + 1 | // test + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:1:1] + 1 | // test + : ^ + `---- + + x Ident { value: Atom('test' type=inline), raw: Atom('test' type=inline) } + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:1:1] + 1 | // test + : ^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:1:1] + 1 | // test + : ^ + 2 | a { + `---- + + x Ident { value: Atom('a' type=inline), raw: Atom('a' type=inline) } + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:2:1] + 2 | a { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:2:1] + 2 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:2:1] + 2 | ,-> a { + 3 | | color: red; + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:3:5] + 3 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:3:5] + 3 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:3:5] + 3 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:3:5] + 3 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/qualified-rule/double-slash-comment/input.css:3:5] + 3 | color: red; + : ^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/qualified-rule/only-block/span.rust-debug b/crates/swc_css_parser/tests/recovery/qualified-rule/only-block/span.rust-debug new file mode 100644 index 00000000000..13498707fed --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/qualified-rule/only-block/span.rust-debug @@ -0,0 +1,117 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/qualified-rule/only-block/input.css:1:1] + 1 | ,-> { + 2 | | + 3 | | } + 4 | | + 5 | | {} + 6 | | + 7 | | { + 8 | | color: red; + 9 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/qualified-rule/only-block/input.css:1:1] + 1 | ,-> { + 2 | | + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/qualified-rule/only-block/input.css:1:1] + 1 | ,-> { + 2 | | + 3 | `-> } + `---- + + x Tokens + + x SimpleBlock + ,-[$DIR/tests/recovery/qualified-rule/only-block/input.css:1:1] + 1 | ,-> { + 2 | | + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/qualified-rule/only-block/input.css:5:1] + 5 | {} + : ^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/qualified-rule/only-block/input.css:5:1] + 5 | {} + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/qualified-rule/only-block/input.css:5:1] + 5 | {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/qualified-rule/only-block/input.css:7:1] + 7 | ,-> { + 8 | | color: red; + 9 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/qualified-rule/only-block/input.css:7:1] + 7 | ,-> { + 8 | | color: red; + 9 | `-> } + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/qualified-rule/only-block/input.css:7:1] + 7 | ,-> { + 8 | | color: red; + 9 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/qualified-rule/only-block/input.css:8:5] + 8 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/qualified-rule/only-block/input.css:8:5] + 8 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/qualified-rule/only-block/input.css:8:5] + 8 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/qualified-rule/only-block/input.css:8:5] + 8 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/qualified-rule/only-block/input.css:8:5] + 8 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/qualified-rule/only-block/input.css:8:5] + 8 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/qualified-rule/only-block/input.css:8:5] + 8 | color: red; + : ^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher-1/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher-1/span.rust-debug new file mode 100644 index 00000000000..d0484b15674 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher-1/span.rust-debug @@ -0,0 +1,60 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-1/input.css:1:1] + 1 | [href=] {} + : ^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-1/input.css:1:1] + 1 | [href=] {} + : ^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-1/input.css:1:1] + 1 | [href=] {} + : ^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-1/input.css:1:1] + 1 | [href=] {} + : ^^^^^^^^ + `---- + + x LBracket + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-1/input.css:1:1] + 1 | [href=] {} + : ^ + `---- + + x Ident { value: Atom('href' type=inline), raw: Atom('href' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-1/input.css:1:1] + 1 | [href=] {} + : ^^^^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-1/input.css:1:1] + 1 | [href=] {} + : ^ + `---- + + x RBracket + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-1/input.css:1:1] + 1 | [href=] {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-1/input.css:1:1] + 1 | [href=] {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-1/input.css:1:1] + 1 | [href=] {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher-2/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher-2/span.rust-debug new file mode 100644 index 00000000000..b7e344c11e2 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher-2/span.rust-debug @@ -0,0 +1,72 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-2/input.css:1:1] + 1 | [href#="test"] {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-2/input.css:1:1] + 1 | [href#="test"] {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-2/input.css:1:1] + 1 | [href#="test"] {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-2/input.css:1:1] + 1 | [href#="test"] {} + : ^^^^^^^^^^^^^^^ + `---- + + x LBracket + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-2/input.css:1:1] + 1 | [href#="test"] {} + : ^ + `---- + + x Ident { value: Atom('href' type=inline), raw: Atom('href' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-2/input.css:1:1] + 1 | [href#="test"] {} + : ^^^^ + `---- + + x Delim { value: '#' } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-2/input.css:1:1] + 1 | [href#="test"] {} + : ^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-2/input.css:1:1] + 1 | [href#="test"] {} + : ^ + `---- + + x String { value: Atom('test' type=inline), raw: Atom('"test"' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-2/input.css:1:1] + 1 | [href#="test"] {} + : ^^^^^^ + `---- + + x RBracket + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-2/input.css:1:1] + 1 | [href#="test"] {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-2/input.css:1:1] + 1 | [href#="test"] {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-2/input.css:1:1] + 1 | [href#="test"] {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher-3/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher-3/span.rust-debug new file mode 100644 index 00000000000..10298a79855 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher-3/span.rust-debug @@ -0,0 +1,160 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | ,-> a[title * = "title" i ] { + 2 | | color: purple; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | ,-> a[title * = "title" i ] { + 2 | | color: purple; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | ,-> a[title * = "title" i ] { + 2 | | color: purple; + 3 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | a[title * = "title" i ] { + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident { value: Atom('a' type=inline), raw: Atom('a' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | a[title * = "title" i ] { + : ^ + `---- + + x LBracket + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | a[title * = "title" i ] { + : ^ + `---- + + x Ident { value: Atom('title' type=inline), raw: Atom('title' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | a[title * = "title" i ] { + : ^^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | a[title * = "title" i ] { + : ^ + `---- + + x Delim { value: '*' } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | a[title * = "title" i ] { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | a[title * = "title" i ] { + : ^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | a[title * = "title" i ] { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | a[title * = "title" i ] { + : ^ + `---- + + x String { value: Atom('title' type=inline), raw: Atom('"title"' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | a[title * = "title" i ] { + : ^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | a[title * = "title" i ] { + : ^ + `---- + + x Ident { value: Atom('i' type=inline), raw: Atom('i' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | a[title * = "title" i ] { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | a[title * = "title" i ] { + : ^ + `---- + + x RBracket + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | a[title * = "title" i ] { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | a[title * = "title" i ] { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:1:1] + 1 | ,-> a[title * = "title" i ] { + 2 | | color: purple; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:2:3] + 2 | color: purple; + : ^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:2:3] + 2 | color: purple; + : ^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:2:3] + 2 | color: purple; + : ^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:2:3] + 2 | color: purple; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:2:3] + 2 | color: purple; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:2:3] + 2 | color: purple; + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-3/input.css:2:3] + 2 | color: purple; + : ^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher-4/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher-4/span.rust-debug new file mode 100644 index 00000000000..cae714d2969 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher-4/span.rust-debug @@ -0,0 +1,124 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:1:1] + 1 | ,-> a[title%="title"] { + 2 | | color: purple; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:1:1] + 1 | ,-> a[title%="title"] { + 2 | | color: purple; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:1:1] + 1 | ,-> a[title%="title"] { + 2 | | color: purple; + 3 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:1:1] + 1 | a[title%="title"] { + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Ident { value: Atom('a' type=inline), raw: Atom('a' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:1:1] + 1 | a[title%="title"] { + : ^ + `---- + + x LBracket + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:1:1] + 1 | a[title%="title"] { + : ^ + `---- + + x Ident { value: Atom('title' type=inline), raw: Atom('title' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:1:1] + 1 | a[title%="title"] { + : ^^^^^ + `---- + + x Delim { value: '%' } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:1:1] + 1 | a[title%="title"] { + : ^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:1:1] + 1 | a[title%="title"] { + : ^ + `---- + + x String { value: Atom('title' type=inline), raw: Atom('"title"' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:1:1] + 1 | a[title%="title"] { + : ^^^^^^^ + `---- + + x RBracket + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:1:1] + 1 | a[title%="title"] { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:1:1] + 1 | a[title%="title"] { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:1:1] + 1 | ,-> a[title%="title"] { + 2 | | color: purple; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:2:3] + 2 | color: purple; + : ^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:2:3] + 2 | color: purple; + : ^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:2:3] + 2 | color: purple; + : ^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:2:3] + 2 | color: purple; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:2:3] + 2 | color: purple; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:2:3] + 2 | color: purple; + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher-4/input.css:2:3] + 2 | color: purple; + : ^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher/span.rust-debug new file mode 100644 index 00000000000..95b8c716930 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-matcher/span.rust-debug @@ -0,0 +1,72 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher/input.css:1:1] + 1 | [href==".org"] {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher/input.css:1:1] + 1 | [href==".org"] {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher/input.css:1:1] + 1 | [href==".org"] {} + : ^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher/input.css:1:1] + 1 | [href==".org"] {} + : ^^^^^^^^^^^^^^^ + `---- + + x LBracket + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher/input.css:1:1] + 1 | [href==".org"] {} + : ^ + `---- + + x Ident { value: Atom('href' type=inline), raw: Atom('href' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher/input.css:1:1] + 1 | [href==".org"] {} + : ^^^^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher/input.css:1:1] + 1 | [href==".org"] {} + : ^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher/input.css:1:1] + 1 | [href==".org"] {} + : ^ + `---- + + x String { value: Atom('.org' type=inline), raw: Atom('".org"' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher/input.css:1:1] + 1 | [href==".org"] {} + : ^^^^^^ + `---- + + x RBracket + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher/input.css:1:1] + 1 | [href==".org"] {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher/input.css:1:1] + 1 | [href==".org"] {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/attribute/invalid-matcher/input.css:1:1] + 1 | [href==".org"] {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-modifier/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-modifier/span.rust-debug new file mode 100644 index 00000000000..8264d7d2938 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/attribute/invalid-modifier/span.rust-debug @@ -0,0 +1,78 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/attribute/invalid-modifier/input.css:1:1] + 1 | [href="test" "z"] {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/attribute/invalid-modifier/input.css:1:1] + 1 | [href="test" "z"] {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/attribute/invalid-modifier/input.css:1:1] + 1 | [href="test" "z"] {} + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/attribute/invalid-modifier/input.css:1:1] + 1 | [href="test" "z"] {} + : ^^^^^^^^^^^^^^^^^^ + `---- + + x LBracket + ,-[$DIR/tests/recovery/selector/attribute/invalid-modifier/input.css:1:1] + 1 | [href="test" "z"] {} + : ^ + `---- + + x Ident { value: Atom('href' type=inline), raw: Atom('href' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-modifier/input.css:1:1] + 1 | [href="test" "z"] {} + : ^^^^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/selector/attribute/invalid-modifier/input.css:1:1] + 1 | [href="test" "z"] {} + : ^ + `---- + + x String { value: Atom('test' type=inline), raw: Atom('"test"' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-modifier/input.css:1:1] + 1 | [href="test" "z"] {} + : ^^^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-modifier/input.css:1:1] + 1 | [href="test" "z"] {} + : ^ + `---- + + x String { value: Atom('z' type=inline), raw: Atom('"z"' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-modifier/input.css:1:1] + 1 | [href="test" "z"] {} + : ^^^ + `---- + + x RBracket + ,-[$DIR/tests/recovery/selector/attribute/invalid-modifier/input.css:1:1] + 1 | [href="test" "z"] {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/invalid-modifier/input.css:1:1] + 1 | [href="test" "z"] {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/attribute/invalid-modifier/input.css:1:1] + 1 | [href="test" "z"] {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/attribute/unclosed/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/attribute/unclosed/span.rust-debug new file mode 100644 index 00000000000..cbeea0d26d0 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/attribute/unclosed/span.rust-debug @@ -0,0 +1,70 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/attribute/unclosed/input.css:1:1] + 1 | ,-> .class[attr= { + 2 | | + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/attribute/unclosed/input.css:1:1] + 1 | ,-> .class[attr= { + 2 | | + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/attribute/unclosed/input.css:1:1] + 1 | ,-> .class[attr= { + 2 | | + 3 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/attribute/unclosed/input.css:1:1] + 1 | .class[attr= { + : ^^^^^^^^^^^^^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/selector/attribute/unclosed/input.css:1:1] + 1 | .class[attr= { + : ^ + `---- + + x Ident { value: Atom('class' type=static), raw: Atom('class' type=static) } + ,-[$DIR/tests/recovery/selector/attribute/unclosed/input.css:1:1] + 1 | .class[attr= { + : ^^^^^ + `---- + + x LBracket + ,-[$DIR/tests/recovery/selector/attribute/unclosed/input.css:1:1] + 1 | .class[attr= { + : ^ + `---- + + x Ident { value: Atom('attr' type=inline), raw: Atom('attr' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/unclosed/input.css:1:1] + 1 | .class[attr= { + : ^^^^ + `---- + + x Delim { value: '=' } + ,-[$DIR/tests/recovery/selector/attribute/unclosed/input.css:1:1] + 1 | .class[attr= { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/attribute/unclosed/input.css:1:1] + 1 | .class[attr= { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/attribute/unclosed/input.css:1:1] + 1 | ,-> .class[attr= { + 2 | | + 3 | `-> } + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/combinator/only/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/combinator/only/span.rust-debug new file mode 100644 index 00000000000..573a07a8795 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/combinator/only/span.rust-debug @@ -0,0 +1,46 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/combinator/only/input.css:1:1] + 1 | ,-> > { + 2 | | + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/combinator/only/input.css:1:1] + 1 | ,-> > { + 2 | | + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/combinator/only/input.css:1:1] + 1 | ,-> > { + 2 | | + 3 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/combinator/only/input.css:1:1] + 1 | > { + : ^^ + `---- + + x Delim { value: '>' } + ,-[$DIR/tests/recovery/selector/combinator/only/input.css:1:1] + 1 | > { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/combinator/only/input.css:1:1] + 1 | > { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/combinator/only/input.css:1:1] + 1 | ,-> > { + 2 | | + 3 | `-> } + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/combinator/two/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/combinator/two/span.rust-debug new file mode 100644 index 00000000000..fb1f1f2295a --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/combinator/two/span.rust-debug @@ -0,0 +1,66 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/combinator/two/input.css:1:1] + 1 | span ~ + {} + : ^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/combinator/two/input.css:1:1] + 1 | span ~ + {} + : ^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/combinator/two/input.css:1:1] + 1 | span ~ + {} + : ^^^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/combinator/two/input.css:1:1] + 1 | span ~ + {} + : ^^^^^^^^^ + `---- + + x Ident { value: Atom('span' type=inline), raw: Atom('span' type=inline) } + ,-[$DIR/tests/recovery/selector/combinator/two/input.css:1:1] + 1 | span ~ + {} + : ^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/combinator/two/input.css:1:1] + 1 | span ~ + {} + : ^ + `---- + + x Delim { value: '~' } + ,-[$DIR/tests/recovery/selector/combinator/two/input.css:1:1] + 1 | span ~ + {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/combinator/two/input.css:1:1] + 1 | span ~ + {} + : ^ + `---- + + x Delim { value: '+' } + ,-[$DIR/tests/recovery/selector/combinator/two/input.css:1:1] + 1 | span ~ + {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/combinator/two/input.css:1:1] + 1 | span ~ + {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/combinator/two/input.css:1:1] + 1 | span ~ + {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/id/invalid/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/id/invalid/span.rust-debug new file mode 100644 index 00000000000..4d94ef7f74f --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/id/invalid/span.rust-debug @@ -0,0 +1,46 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/id/invalid/input.css:1:1] + 1 | ,-> #1234 { + 2 | | + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/id/invalid/input.css:1:1] + 1 | ,-> #1234 { + 2 | | + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/id/invalid/input.css:1:1] + 1 | ,-> #1234 { + 2 | | + 3 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/id/invalid/input.css:1:1] + 1 | #1234 { + : ^^^^^^ + `---- + + x Hash { is_id: false, value: Atom('1234' type=inline), raw: Atom('1234' type=inline) } + ,-[$DIR/tests/recovery/selector/id/invalid/input.css:1:1] + 1 | #1234 { + : ^^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/id/invalid/input.css:1:1] + 1 | #1234 { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/id/invalid/input.css:1:1] + 1 | ,-> #1234 { + 2 | | + 3 | `-> } + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/list/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/list/span.rust-debug new file mode 100644 index 00000000000..4bd291a8b68 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/list/span.rust-debug @@ -0,0 +1,42 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/list/input.css:1:1] + 1 | ,-> , { + 2 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/list/input.css:1:1] + 1 | ,-> , { + 2 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/list/input.css:1:1] + 1 | ,-> , { + 2 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/list/input.css:1:1] + 1 | , { + : ^^ + `---- + + x Comma + ,-[$DIR/tests/recovery/selector/list/input.css:1:1] + 1 | , { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/list/input.css:1:1] + 1 | , { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/list/input.css:1:1] + 1 | ,-> , { + 2 | `-> } + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/pseudo-class/an-plus-b/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/pseudo-class/an-plus-b/span.rust-debug new file mode 100644 index 00000000000..ad6ff903404 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/pseudo-class/an-plus-b/span.rust-debug @@ -0,0 +1,72 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/pseudo-class/an-plus-b/input.css:1:1] + 1 | :nth-child(unknown) {} + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/pseudo-class/an-plus-b/input.css:1:1] + 1 | :nth-child(unknown) {} + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/pseudo-class/an-plus-b/input.css:1:1] + 1 | :nth-child(unknown) {} + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/selector/pseudo-class/an-plus-b/input.css:1:1] + 1 | :nth-child(unknown) {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/selector/pseudo-class/an-plus-b/input.css:1:1] + 1 | :nth-child(unknown) {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/selector/pseudo-class/an-plus-b/input.css:1:1] + 1 | :nth-child(unknown) {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/selector/pseudo-class/an-plus-b/input.css:1:1] + 1 | :nth-child(unknown) {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/selector/pseudo-class/an-plus-b/input.css:1:1] + 1 | :nth-child(unknown) {} + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/selector/pseudo-class/an-plus-b/input.css:1:1] + 1 | :nth-child(unknown) {} + : ^^^^^^^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/selector/pseudo-class/an-plus-b/input.css:1:1] + 1 | :nth-child(unknown) {} + : ^^^^^^^ + `---- + + x Ident { value: Atom('unknown' type=static), raw: Atom('unknown' type=static) } + ,-[$DIR/tests/recovery/selector/pseudo-class/an-plus-b/input.css:1:1] + 1 | :nth-child(unknown) {} + : ^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/pseudo-class/an-plus-b/input.css:1:1] + 1 | :nth-child(unknown) {} + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/pseudo-class/invalid-function/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/pseudo-class/invalid-function/span.rust-debug new file mode 100644 index 00000000000..ecff2b2392f --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/pseudo-class/invalid-function/span.rust-debug @@ -0,0 +1,70 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-function/input.css:1:1] + 1 | ,-> : nth-child(2) { + 2 | | + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-function/input.css:1:1] + 1 | ,-> : nth-child(2) { + 2 | | + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-function/input.css:1:1] + 1 | ,-> : nth-child(2) { + 2 | | + 3 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-function/input.css:1:1] + 1 | : nth-child(2) { + : ^^^^^^^^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-function/input.css:1:1] + 1 | : nth-child(2) { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-function/input.css:1:1] + 1 | : nth-child(2) { + : ^ + `---- + + x Function { value: Atom('nth-child' type=dynamic), raw: Atom('nth-child' type=dynamic) } + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-function/input.css:1:1] + 1 | : nth-child(2) { + : ^^^^^^^^^^ + `---- + + x Number { value: 2.0, raw: Atom('2' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-function/input.css:1:1] + 1 | : nth-child(2) { + : ^ + `---- + + x RParen + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-function/input.css:1:1] + 1 | : nth-child(2) { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-function/input.css:1:1] + 1 | : nth-child(2) { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-function/input.css:1:1] + 1 | ,-> : nth-child(2) { + 2 | | + 3 | `-> } + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/pseudo-class/invalid-ident/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/pseudo-class/invalid-ident/span.rust-debug new file mode 100644 index 00000000000..5a534552136 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/pseudo-class/invalid-ident/span.rust-debug @@ -0,0 +1,58 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-ident/input.css:1:1] + 1 | ,-> : first-child { + 2 | | + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-ident/input.css:1:1] + 1 | ,-> : first-child { + 2 | | + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-ident/input.css:1:1] + 1 | ,-> : first-child { + 2 | | + 3 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-ident/input.css:1:1] + 1 | : first-child { + : ^^^^^^^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-ident/input.css:1:1] + 1 | : first-child { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-ident/input.css:1:1] + 1 | : first-child { + : ^ + `---- + + x Ident { value: Atom('first-child' type=dynamic), raw: Atom('first-child' type=dynamic) } + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-ident/input.css:1:1] + 1 | : first-child { + : ^^^^^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-ident/input.css:1:1] + 1 | : first-child { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid-ident/input.css:1:1] + 1 | ,-> : first-child { + 2 | | + 3 | `-> } + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/pseudo-class/invalid/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/pseudo-class/invalid/span.rust-debug new file mode 100644 index 00000000000..257d0ef92e5 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/pseudo-class/invalid/span.rust-debug @@ -0,0 +1,162 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:1:1] + 1 | ,-> a: b {} + 2 | | + 3 | | a: b { + 4 | | color: red; + 5 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:1:1] + 1 | a: b {} + : ^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:1:1] + 1 | a: b {} + : ^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:1:1] + 1 | a: b {} + : ^^^^^ + `---- + + x Ident { value: Atom('a' type=inline), raw: Atom('a' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:1:1] + 1 | a: b {} + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:1:1] + 1 | a: b {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:1:1] + 1 | a: b {} + : ^ + `---- + + x Ident { value: Atom('b' type=inline), raw: Atom('b' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:1:1] + 1 | a: b {} + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:1:1] + 1 | a: b {} + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:1:1] + 1 | a: b {} + : ^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:3:1] + 3 | ,-> a: b { + 4 | | color: red; + 5 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:3:1] + 3 | ,-> a: b { + 4 | | color: red; + 5 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:3:1] + 3 | a: b { + : ^^^^^ + `---- + + x Ident { value: Atom('a' type=inline), raw: Atom('a' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:3:1] + 3 | a: b { + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:3:1] + 3 | a: b { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:3:1] + 3 | a: b { + : ^ + `---- + + x Ident { value: Atom('b' type=inline), raw: Atom('b' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:3:1] + 3 | a: b { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:3:1] + 3 | a: b { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:3:1] + 3 | ,-> a: b { + 4 | | color: red; + 5 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:4:5] + 4 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:4:5] + 4 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:4:5] + 4 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:4:5] + 4 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/selector/pseudo-class/invalid/input.css:4:5] + 4 | color: red; + : ^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/pseudo-element/after/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/pseudo-element/after/span.rust-debug new file mode 100644 index 00000000000..1bc4c7eca60 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/pseudo-element/after/span.rust-debug @@ -0,0 +1,64 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/pseudo-element/after/input.css:1:1] + 1 | ,-> :: foo { + 2 | | + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/pseudo-element/after/input.css:1:1] + 1 | ,-> :: foo { + 2 | | + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/pseudo-element/after/input.css:1:1] + 1 | ,-> :: foo { + 2 | | + 3 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/pseudo-element/after/input.css:1:1] + 1 | :: foo { + : ^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/selector/pseudo-element/after/input.css:1:1] + 1 | :: foo { + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/selector/pseudo-element/after/input.css:1:1] + 1 | :: foo { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-element/after/input.css:1:1] + 1 | :: foo { + : ^ + `---- + + x Ident { value: Atom('foo' type=inline), raw: Atom('foo' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-element/after/input.css:1:1] + 1 | :: foo { + : ^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-element/after/input.css:1:1] + 1 | :: foo { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/pseudo-element/after/input.css:1:1] + 1 | ,-> :: foo { + 2 | | + 3 | `-> } + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/pseudo-element/between/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/pseudo-element/between/span.rust-debug new file mode 100644 index 00000000000..294f1619643 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/pseudo-element/between/span.rust-debug @@ -0,0 +1,64 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/pseudo-element/between/input.css:1:1] + 1 | ,-> : :foo { + 2 | | + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/pseudo-element/between/input.css:1:1] + 1 | ,-> : :foo { + 2 | | + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/pseudo-element/between/input.css:1:1] + 1 | ,-> : :foo { + 2 | | + 3 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/pseudo-element/between/input.css:1:1] + 1 | : :foo { + : ^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/selector/pseudo-element/between/input.css:1:1] + 1 | : :foo { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-element/between/input.css:1:1] + 1 | : :foo { + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/selector/pseudo-element/between/input.css:1:1] + 1 | : :foo { + : ^ + `---- + + x Ident { value: Atom('foo' type=inline), raw: Atom('foo' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-element/between/input.css:1:1] + 1 | : :foo { + : ^^^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-element/between/input.css:1:1] + 1 | : :foo { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/pseudo-element/between/input.css:1:1] + 1 | ,-> : :foo { + 2 | | + 3 | `-> } + `---- diff --git a/crates/swc_css_parser/tests/recovery/selector/pseudo-element/invalid/span.rust-debug b/crates/swc_css_parser/tests/recovery/selector/pseudo-element/invalid/span.rust-debug new file mode 100644 index 00000000000..33dbb26ae06 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/selector/pseudo-element/invalid/span.rust-debug @@ -0,0 +1,60 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/selector/pseudo-element/invalid/input.css:1:1] + 1 | ,-> a::1 { + 2 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/selector/pseudo-element/invalid/input.css:1:1] + 1 | ,-> a::1 { + 2 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/selector/pseudo-element/invalid/input.css:1:1] + 1 | ,-> a::1 { + 2 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/recovery/selector/pseudo-element/invalid/input.css:1:1] + 1 | a::1 { + : ^^^^^ + `---- + + x Ident { value: Atom('a' type=inline), raw: Atom('a' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-element/invalid/input.css:1:1] + 1 | a::1 { + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/selector/pseudo-element/invalid/input.css:1:1] + 1 | a::1 { + : ^ + `---- + + x Colon + ,-[$DIR/tests/recovery/selector/pseudo-element/invalid/input.css:1:1] + 1 | a::1 { + : ^ + `---- + + x Number { value: 1.0, raw: Atom('1' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/selector/pseudo-element/invalid/input.css:1:1] + 1 | a::1 { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/selector/pseudo-element/invalid/input.css:1:1] + 1 | a::1 { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/selector/pseudo-element/invalid/input.css:1:1] + 1 | ,-> a::1 { + 2 | `-> } + `---- diff --git a/crates/swc_css_parser/tests/recovery/simple-block/unclosed-in-function/span.rust-debug b/crates/swc_css_parser/tests/recovery/simple-block/unclosed-in-function/span.rust-debug new file mode 100644 index 00000000000..6bcc827f5ef --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/simple-block/unclosed-in-function/span.rust-debug @@ -0,0 +1,209 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:1:1] + 1 | ,-> .style { + 2 | | grid-template-columns: repeat(4, [col-start); + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:1:1] + 1 | ,-> .style { + 2 | | grid-template-columns: repeat(4, [col-start); + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:1:1] + 1 | ,-> .style { + 2 | | grid-template-columns: repeat(4, [col-start); + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:1:1] + 1 | .style { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:1:1] + 1 | .style { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:1:1] + 1 | ,-> .style { + 2 | | grid-template-columns: repeat(4, [col-start); + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | ,-> grid-template-columns: repeat(4, [col-start); + 3 | `-> } + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | ,-> grid-template-columns: repeat(4, [col-start); + 3 | `-> } + `---- + + x Declaration + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | ,-> grid-template-columns: repeat(4, [col-start); + 3 | `-> } + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | ,-> grid-template-columns: repeat(4, [col-start); + 3 | `-> } + `---- + + x Function + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | ,-> grid-template-columns: repeat(4, [col-start); + 3 | `-> } + `---- + + x Ident + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start); + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start); + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | ,-> grid-template-columns: repeat(4, [col-start); + 3 | `-> } + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | ,-> grid-template-columns: repeat(4, [col-start); + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start); + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start); + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start); + : ^ + `---- + + x RParen + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start); + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:2:5] + 2 | grid-template-columns: repeat(4, [col-start); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:3:1] + 3 | } + : ^ + `---- + + x RBrace + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:3:1] + 3 | } + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:3:1] + 3 | } + : ^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/simple-block/unclosed-in-function/input.css:3:1] + 3 | } + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/style-blocks-contents/basic/span.rust-debug b/crates/swc_css_parser/tests/recovery/style-blocks-contents/basic/span.rust-debug new file mode 100644 index 00000000000..a9dc6681a64 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/style-blocks-contents/basic/span.rust-debug @@ -0,0 +1,1396 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:1:1] + 1 | ,-> .class { + 2 | | color: blue; + 3 | | + 4 | | &.foo { + 5 | | ident + 6 | | color: green; + 7 | | } + 8 | | + 9 | | @supports not (display: grid) { + 10 | | float: right; + 11 | | + 12 | | & .class { + 13 | | ident + 14 | | color: red + 15 | | } + 16 | | } + 17 | | } + 18 | | + 19 | | .class { + 20 | | color: blue; + 21 | | + 22 | | &.foo { + 23 | | ident; + 24 | | color: green; + 25 | | } + 26 | | + 27 | | @supports not (display: grid) { + 28 | | float: right; + 29 | | + 30 | | & .class { + 31 | | ident; + 32 | | color: red + 33 | | } + 34 | | } + 35 | | } + 36 | | + 37 | | .class { + 38 | | color: red; + 39 | | & test; + 40 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:1:1] + 1 | ,-> .class { + 2 | | color: blue; + 3 | | + 4 | | &.foo { + 5 | | ident + 6 | | color: green; + 7 | | } + 8 | | + 9 | | @supports not (display: grid) { + 10 | | float: right; + 11 | | + 12 | | & .class { + 13 | | ident + 14 | | color: red + 15 | | } + 16 | | } + 17 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:1:1] + 1 | ,-> .class { + 2 | | color: blue; + 3 | | + 4 | | &.foo { + 5 | | ident + 6 | | color: green; + 7 | | } + 8 | | + 9 | | @supports not (display: grid) { + 10 | | float: right; + 11 | | + 12 | | & .class { + 13 | | ident + 14 | | color: red + 15 | | } + 16 | | } + 17 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:1:1] + 1 | .class { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:1:1] + 1 | ,-> .class { + 2 | | color: blue; + 3 | | + 4 | | &.foo { + 5 | | ident + 6 | | color: green; + 7 | | } + 8 | | + 9 | | @supports not (display: grid) { + 10 | | float: right; + 11 | | + 12 | | & .class { + 13 | | ident + 14 | | color: red + 15 | | } + 16 | | } + 17 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:2:5] + 2 | color: blue; + : ^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:2:5] + 2 | color: blue; + : ^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:2:5] + 2 | color: blue; + : ^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:2:5] + 2 | color: blue; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:2:5] + 2 | color: blue; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:2:5] + 2 | color: blue; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:2:5] + 2 | color: blue; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:4:5] + 4 | ,-> &.foo { + 5 | | ident + 6 | | color: green; + 7 | `-> } + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:4:5] + 4 | ,-> &.foo { + 5 | | ident + 6 | | color: green; + 7 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:4:5] + 4 | ,-> &.foo { + 5 | | ident + 6 | | color: green; + 7 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:4:5] + 4 | &.foo { + : ^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:4:5] + 4 | &.foo { + : ^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:4:5] + 4 | &.foo { + : ^^^^^ + `---- + + x NestingSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:4:5] + 4 | &.foo { + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:4:5] + 4 | &.foo { + : ^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:4:5] + 4 | &.foo { + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:4:5] + 4 | &.foo { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:4:5] + 4 | ,-> &.foo { + 5 | | ident + 6 | | color: green; + 7 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:5:9] + 5 | ,-> ident + 6 | `-> color: green; + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:5:9] + 5 | ,-> ident + 6 | `-> color: green; + `---- + + x Tokens + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:5:9] + 5 | ,-> ident + 6 | `-> color: green; + `---- + + x Ident { value: Atom('ident' type=inline), raw: Atom('ident' type=inline) } + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:5:9] + 5 | ident + : ^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=dynamic) } + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:5:9] + 5 | ,-> ident + 6 | `-> color: green; + `---- + + x Ident { value: Atom('color' type=inline), raw: Atom('color' type=inline) } + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:6:9] + 6 | color: green; + : ^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:6:9] + 6 | color: green; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:6:9] + 6 | color: green; + : ^ + `---- + + x Ident { value: Atom('green' type=inline), raw: Atom('green' type=inline) } + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:6:9] + 6 | color: green; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:6:9] + 6 | color: green; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:9:5] + 9 | ,-> @supports not (display: grid) { + 10 | | float: right; + 11 | | + 12 | | & .class { + 13 | | ident + 14 | | color: red + 15 | | } + 16 | `-> } + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:9:5] + 9 | ,-> @supports not (display: grid) { + 10 | | float: right; + 11 | | + 12 | | & .class { + 13 | | ident + 14 | | color: red + 15 | | } + 16 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:9:5] + 9 | ,-> @supports not (display: grid) { + 10 | | float: right; + 11 | | + 12 | | & .class { + 13 | | ident + 14 | | color: red + 15 | | } + 16 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:9:5] + 9 | @supports not (display: grid) { + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:9:5] + 9 | @supports not (display: grid) { + : ^^^^^^^^ + `---- + + x SupportsCondition + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:9:5] + 9 | @supports not (display: grid) { + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:9:5] + 9 | @supports not (display: grid) { + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsNot + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:9:5] + 9 | @supports not (display: grid) { + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:9:5] + 9 | @supports not (display: grid) { + : ^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:9:5] + 9 | @supports not (display: grid) { + : ^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:9:5] + 9 | @supports not (display: grid) { + : ^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:9:5] + 9 | @supports not (display: grid) { + : ^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:9:5] + 9 | @supports not (display: grid) { + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:9:5] + 9 | @supports not (display: grid) { + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:9:5] + 9 | @supports not (display: grid) { + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:9:5] + 9 | @supports not (display: grid) { + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:9:5] + 9 | ,-> @supports not (display: grid) { + 10 | | float: right; + 11 | | + 12 | | & .class { + 13 | | ident + 14 | | color: red + 15 | | } + 16 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:10:9] + 10 | float: right; + : ^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:10:9] + 10 | float: right; + : ^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:10:9] + 10 | float: right; + : ^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:10:9] + 10 | float: right; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:10:9] + 10 | float: right; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:10:9] + 10 | float: right; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:10:9] + 10 | float: right; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:12:9] + 12 | ,-> & .class { + 13 | | ident + 14 | | color: red + 15 | `-> } + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:12:9] + 12 | ,-> & .class { + 13 | | ident + 14 | | color: red + 15 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:12:9] + 12 | ,-> & .class { + 13 | | ident + 14 | | color: red + 15 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:12:9] + 12 | & .class { + : ^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:12:9] + 12 | & .class { + : ^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:12:9] + 12 | & .class { + : ^ + `---- + + x NestingSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:12:9] + 12 | & .class { + : ^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:12:9] + 12 | & .class { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:12:9] + 12 | & .class { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:12:9] + 12 | & .class { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:12:9] + 12 | & .class { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:12:9] + 12 | & .class { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:12:9] + 12 | ,-> & .class { + 13 | | ident + 14 | | color: red + 15 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:13:13] + 13 | ,-> ident + 14 | | color: red + 15 | `-> } + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:13:13] + 13 | ,-> ident + 14 | | color: red + 15 | `-> } + `---- + + x Tokens + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:13:13] + 13 | ,-> ident + 14 | | color: red + 15 | `-> } + `---- + + x Ident { value: Atom('ident' type=inline), raw: Atom('ident' type=inline) } + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:13:13] + 13 | ident + : ^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=dynamic) } + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:13:13] + 13 | ,-> ident + 14 | `-> color: red + `---- + + x Ident { value: Atom('color' type=inline), raw: Atom('color' type=inline) } + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:14:13] + 14 | color: red + : ^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:14:13] + 14 | color: red + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:14:13] + 14 | color: red + : ^ + `---- + + x Ident { value: Atom('red' type=inline), raw: Atom('red' type=inline) } + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:14:13] + 14 | color: red + : ^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=dynamic) } + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:14:13] + 14 | ,-> color: red + 15 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:19:1] + 19 | ,-> .class { + 20 | | color: blue; + 21 | | + 22 | | &.foo { + 23 | | ident; + 24 | | color: green; + 25 | | } + 26 | | + 27 | | @supports not (display: grid) { + 28 | | float: right; + 29 | | + 30 | | & .class { + 31 | | ident; + 32 | | color: red + 33 | | } + 34 | | } + 35 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:19:1] + 19 | ,-> .class { + 20 | | color: blue; + 21 | | + 22 | | &.foo { + 23 | | ident; + 24 | | color: green; + 25 | | } + 26 | | + 27 | | @supports not (display: grid) { + 28 | | float: right; + 29 | | + 30 | | & .class { + 31 | | ident; + 32 | | color: red + 33 | | } + 34 | | } + 35 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:19:1] + 19 | .class { + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:19:1] + 19 | .class { + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:19:1] + 19 | .class { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:19:1] + 19 | .class { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:19:1] + 19 | .class { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:19:1] + 19 | .class { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:19:1] + 19 | ,-> .class { + 20 | | color: blue; + 21 | | + 22 | | &.foo { + 23 | | ident; + 24 | | color: green; + 25 | | } + 26 | | + 27 | | @supports not (display: grid) { + 28 | | float: right; + 29 | | + 30 | | & .class { + 31 | | ident; + 32 | | color: red + 33 | | } + 34 | | } + 35 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:20:5] + 20 | color: blue; + : ^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:20:5] + 20 | color: blue; + : ^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:20:5] + 20 | color: blue; + : ^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:20:5] + 20 | color: blue; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:20:5] + 20 | color: blue; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:20:5] + 20 | color: blue; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:20:5] + 20 | color: blue; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:22:5] + 22 | ,-> &.foo { + 23 | | ident; + 24 | | color: green; + 25 | `-> } + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:22:5] + 22 | ,-> &.foo { + 23 | | ident; + 24 | | color: green; + 25 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:22:5] + 22 | ,-> &.foo { + 23 | | ident; + 24 | | color: green; + 25 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:22:5] + 22 | &.foo { + : ^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:22:5] + 22 | &.foo { + : ^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:22:5] + 22 | &.foo { + : ^^^^^ + `---- + + x NestingSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:22:5] + 22 | &.foo { + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:22:5] + 22 | &.foo { + : ^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:22:5] + 22 | &.foo { + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:22:5] + 22 | &.foo { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:22:5] + 22 | ,-> &.foo { + 23 | | ident; + 24 | | color: green; + 25 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:23:9] + 23 | ident; + : ^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:23:9] + 23 | ident; + : ^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:23:9] + 23 | ident; + : ^^^^^^ + `---- + + x Ident { value: Atom('ident' type=inline), raw: Atom('ident' type=inline) } + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:23:9] + 23 | ident; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:23:9] + 23 | ident; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:24:9] + 24 | color: green; + : ^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:24:9] + 24 | color: green; + : ^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:24:9] + 24 | color: green; + : ^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:24:9] + 24 | color: green; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:24:9] + 24 | color: green; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:24:9] + 24 | color: green; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:24:9] + 24 | color: green; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:27:5] + 27 | ,-> @supports not (display: grid) { + 28 | | float: right; + 29 | | + 30 | | & .class { + 31 | | ident; + 32 | | color: red + 33 | | } + 34 | `-> } + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:27:5] + 27 | ,-> @supports not (display: grid) { + 28 | | float: right; + 29 | | + 30 | | & .class { + 31 | | ident; + 32 | | color: red + 33 | | } + 34 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:27:5] + 27 | ,-> @supports not (display: grid) { + 28 | | float: right; + 29 | | + 30 | | & .class { + 31 | | ident; + 32 | | color: red + 33 | | } + 34 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:27:5] + 27 | @supports not (display: grid) { + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:27:5] + 27 | @supports not (display: grid) { + : ^^^^^^^^ + `---- + + x SupportsCondition + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:27:5] + 27 | @supports not (display: grid) { + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsConditionType + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:27:5] + 27 | @supports not (display: grid) { + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x SupportsNot + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:27:5] + 27 | @supports not (display: grid) { + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:27:5] + 27 | @supports not (display: grid) { + : ^^^ + `---- + + x SupportsInParens + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:27:5] + 27 | @supports not (display: grid) { + : ^^^^^^^^^^^^^ + `---- + + x SupportsFeature + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:27:5] + 27 | @supports not (display: grid) { + : ^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:27:5] + 27 | @supports not (display: grid) { + : ^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:27:5] + 27 | @supports not (display: grid) { + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:27:5] + 27 | @supports not (display: grid) { + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:27:5] + 27 | @supports not (display: grid) { + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:27:5] + 27 | @supports not (display: grid) { + : ^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:27:5] + 27 | ,-> @supports not (display: grid) { + 28 | | float: right; + 29 | | + 30 | | & .class { + 31 | | ident; + 32 | | color: red + 33 | | } + 34 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:28:9] + 28 | float: right; + : ^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:28:9] + 28 | float: right; + : ^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:28:9] + 28 | float: right; + : ^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:28:9] + 28 | float: right; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:28:9] + 28 | float: right; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:28:9] + 28 | float: right; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:28:9] + 28 | float: right; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:30:9] + 30 | ,-> & .class { + 31 | | ident; + 32 | | color: red + 33 | `-> } + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:30:9] + 30 | ,-> & .class { + 31 | | ident; + 32 | | color: red + 33 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:30:9] + 30 | ,-> & .class { + 31 | | ident; + 32 | | color: red + 33 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:30:9] + 30 | & .class { + : ^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:30:9] + 30 | & .class { + : ^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:30:9] + 30 | & .class { + : ^ + `---- + + x NestingSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:30:9] + 30 | & .class { + : ^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:30:9] + 30 | & .class { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:30:9] + 30 | & .class { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:30:9] + 30 | & .class { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:30:9] + 30 | & .class { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:30:9] + 30 | & .class { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:30:9] + 30 | ,-> & .class { + 31 | | ident; + 32 | | color: red + 33 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:31:13] + 31 | ident; + : ^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:31:13] + 31 | ident; + : ^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:31:13] + 31 | ident; + : ^^^^^^ + `---- + + x Ident { value: Atom('ident' type=inline), raw: Atom('ident' type=inline) } + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:31:13] + 31 | ident; + : ^^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:31:13] + 31 | ident; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:32:13] + 32 | color: red + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:32:13] + 32 | color: red + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:32:13] + 32 | color: red + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:32:13] + 32 | color: red + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:32:13] + 32 | color: red + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:32:13] + 32 | color: red + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:32:13] + 32 | color: red + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:37:1] + 37 | ,-> .class { + 38 | | color: red; + 39 | | & test; + 40 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:37:1] + 37 | ,-> .class { + 38 | | color: red; + 39 | | & test; + 40 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:37:1] + 37 | .class { + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:37:1] + 37 | .class { + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:37:1] + 37 | .class { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:37:1] + 37 | .class { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:37:1] + 37 | .class { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:37:1] + 37 | .class { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:37:1] + 37 | ,-> .class { + 38 | | color: red; + 39 | | & test; + 40 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:38:5] + 38 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:38:5] + 38 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:38:5] + 38 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:38:5] + 38 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:38:5] + 38 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:38:5] + 38 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:38:5] + 38 | color: red; + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:39:5] + 39 | & test; + : ^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:39:5] + 39 | & test; + : ^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:39:5] + 39 | & test; + : ^^^^^^^ + `---- + + x Delim { value: '&' } + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:39:5] + 39 | & test; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:39:5] + 39 | & test; + : ^ + `---- + + x Ident { value: Atom('test' type=inline), raw: Atom('test' type=inline) } + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:39:5] + 39 | & test; + : ^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/style-blocks-contents/basic/input.css:39:5] + 39 | & test; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/style-blocks-contents/invalid-nested-2/span.rust-debug b/crates/swc_css_parser/tests/recovery/style-blocks-contents/invalid-nested-2/span.rust-debug new file mode 100644 index 00000000000..6dbbdbeecb0 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/style-blocks-contents/invalid-nested-2/span.rust-debug @@ -0,0 +1,559 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:1:1] + 1 | ,-> .class { + 2 | | color: red; + 3 | | & test; + 4 | | background: red + 5 | | } + 6 | | + 7 | | article { + 8 | | color: green; + 9 | | & { color: blue; } + 10 | | color: red; + 11 | | &.foo { color: yellow; } /* valid! */ + 12 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:1:1] + 1 | ,-> .class { + 2 | | color: red; + 3 | | & test; + 4 | | background: red + 5 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:1:1] + 1 | ,-> .class { + 2 | | color: red; + 3 | | & test; + 4 | | background: red + 5 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:1:1] + 1 | .class { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:1:1] + 1 | ,-> .class { + 2 | | color: red; + 3 | | & test; + 4 | | background: red + 5 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:2:5] + 2 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:2:5] + 2 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:2:5] + 2 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:2:5] + 2 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:2:5] + 2 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:2:5] + 2 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:2:5] + 2 | color: red; + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:4:5] + 4 | background: red + : ^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:4:5] + 4 | background: red + : ^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:4:5] + 4 | background: red + : ^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:4:5] + 4 | background: red + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:4:5] + 4 | background: red + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:4:5] + 4 | background: red + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:4:5] + 4 | background: red + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:3:5] + 3 | & test; + : ^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:3:5] + 3 | & test; + : ^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:3:5] + 3 | & test; + : ^^^^^^^ + `---- + + x Delim { value: '&' } + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:3:5] + 3 | & test; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:3:5] + 3 | & test; + : ^ + `---- + + x Ident { value: Atom('test' type=inline), raw: Atom('test' type=inline) } + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:3:5] + 3 | & test; + : ^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:3:5] + 3 | & test; + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:7:1] + 7 | ,-> article { + 8 | | color: green; + 9 | | & { color: blue; } + 10 | | color: red; + 11 | | &.foo { color: yellow; } /* valid! */ + 12 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:7:1] + 7 | ,-> article { + 8 | | color: green; + 9 | | & { color: blue; } + 10 | | color: red; + 11 | | &.foo { color: yellow; } /* valid! */ + 12 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:7:1] + 7 | article { + : ^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:7:1] + 7 | article { + : ^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:7:1] + 7 | article { + : ^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:7:1] + 7 | article { + : ^^^^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:7:1] + 7 | article { + : ^^^^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:7:1] + 7 | article { + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:7:1] + 7 | article { + : ^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:7:1] + 7 | ,-> article { + 8 | | color: green; + 9 | | & { color: blue; } + 10 | | color: red; + 11 | | &.foo { color: yellow; } /* valid! */ + 12 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:8:5] + 8 | color: green; + : ^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:8:5] + 8 | color: green; + : ^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:8:5] + 8 | color: green; + : ^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:8:5] + 8 | color: green; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:8:5] + 8 | color: green; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:8:5] + 8 | color: green; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:8:5] + 8 | color: green; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:10:5] + 10 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:10:5] + 10 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:10:5] + 10 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:10:5] + 10 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:10:5] + 10 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:10:5] + 10 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:10:5] + 10 | color: red; + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:9:5] + 9 | & { color: blue; } + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:9:5] + 9 | & { color: blue; } + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:9:5] + 9 | & { color: blue; } + : ^ + `---- + + x NestingSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:9:5] + 9 | & { color: blue; } + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:9:5] + 9 | & { color: blue; } + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:9:5] + 9 | & { color: blue; } + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^ + `---- + + x NestingSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested-2/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/style-blocks-contents/invalid-nested/span.rust-debug b/crates/swc_css_parser/tests/recovery/style-blocks-contents/invalid-nested/span.rust-debug new file mode 100644 index 00000000000..62b5460fea6 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/style-blocks-contents/invalid-nested/span.rust-debug @@ -0,0 +1,559 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:1:1] + 1 | ,-> .class { + 2 | | color: red; + 3 | | & test; + 4 | | background: red; + 5 | | } + 6 | | + 7 | | article { + 8 | | color: green; + 9 | | & { color: blue; } + 10 | | color: red; + 11 | | &.foo { color: yellow; } /* valid! */ + 12 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:1:1] + 1 | ,-> .class { + 2 | | color: red; + 3 | | & test; + 4 | | background: red; + 5 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:1:1] + 1 | ,-> .class { + 2 | | color: red; + 3 | | & test; + 4 | | background: red; + 5 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:1:1] + 1 | .class { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:1:1] + 1 | ,-> .class { + 2 | | color: red; + 3 | | & test; + 4 | | background: red; + 5 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:2:5] + 2 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:2:5] + 2 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:2:5] + 2 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:2:5] + 2 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:2:5] + 2 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:2:5] + 2 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:2:5] + 2 | color: red; + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:4:5] + 4 | background: red; + : ^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:4:5] + 4 | background: red; + : ^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:4:5] + 4 | background: red; + : ^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:4:5] + 4 | background: red; + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:4:5] + 4 | background: red; + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:4:5] + 4 | background: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:4:5] + 4 | background: red; + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:3:5] + 3 | & test; + : ^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:3:5] + 3 | & test; + : ^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:3:5] + 3 | & test; + : ^^^^^^^ + `---- + + x Delim { value: '&' } + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:3:5] + 3 | & test; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:3:5] + 3 | & test; + : ^ + `---- + + x Ident { value: Atom('test' type=inline), raw: Atom('test' type=inline) } + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:3:5] + 3 | & test; + : ^^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:3:5] + 3 | & test; + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:7:1] + 7 | ,-> article { + 8 | | color: green; + 9 | | & { color: blue; } + 10 | | color: red; + 11 | | &.foo { color: yellow; } /* valid! */ + 12 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:7:1] + 7 | ,-> article { + 8 | | color: green; + 9 | | & { color: blue; } + 10 | | color: red; + 11 | | &.foo { color: yellow; } /* valid! */ + 12 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:7:1] + 7 | article { + : ^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:7:1] + 7 | article { + : ^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:7:1] + 7 | article { + : ^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:7:1] + 7 | article { + : ^^^^^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:7:1] + 7 | article { + : ^^^^^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:7:1] + 7 | article { + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:7:1] + 7 | article { + : ^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:7:1] + 7 | ,-> article { + 8 | | color: green; + 9 | | & { color: blue; } + 10 | | color: red; + 11 | | &.foo { color: yellow; } /* valid! */ + 12 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:8:5] + 8 | color: green; + : ^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:8:5] + 8 | color: green; + : ^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:8:5] + 8 | color: green; + : ^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:8:5] + 8 | color: green; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:8:5] + 8 | color: green; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:8:5] + 8 | color: green; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:8:5] + 8 | color: green; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:10:5] + 10 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:10:5] + 10 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:10:5] + 10 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:10:5] + 10 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:10:5] + 10 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:10:5] + 10 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:10:5] + 10 | color: red; + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:9:5] + 9 | & { color: blue; } + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:9:5] + 9 | & { color: blue; } + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:9:5] + 9 | & { color: blue; } + : ^ + `---- + + x NestingSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:9:5] + 9 | & { color: blue; } + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:9:5] + 9 | & { color: blue; } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:9:5] + 9 | & { color: blue; } + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:9:5] + 9 | & { color: blue; } + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^ + `---- + + x NestingSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/style-blocks-contents/invalid-nested/input.css:11:5] + 11 | &.foo { color: yellow; } /* valid! */ + : ^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/styled-jsx/1/span.rust-debug b/crates/swc_css_parser/tests/recovery/styled-jsx/1/span.rust-debug new file mode 100644 index 00000000000..fc580569004 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/styled-jsx/1/span.rust-debug @@ -0,0 +1,1047 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:1:1] + 1 | ,-> .removed-214123 { + 2 | | flex-wrap: wrap; + 3 | | margin: __styled-jsx-placeholder__0; + 4 | | box-sizing: border-box; + 5 | | } + 6 | | + 7 | | .removed-214123 :global(> .removed-214123-item) { + 8 | | padding: __styled-jsx-placeholder__1; + 9 | | flex-grow: 0; + 10 | | flex-basis: __styled-jsx-placeholder__2%; + 11 | | min-width: 0; + 12 | | } + 13 | | + 14 | | @media screen { + 15 | | .removed-214123 :global(> .removed-214123-item) { + 16 | | flex-basis: __styled-jsx-placeholder__3%; + 17 | | } + 18 | | } + 19 | | + 20 | | @media screen { + 21 | | .removed-214123 :global(> .removed-214123-item) { + 22 | | flex-basis: __styled-jsx-placeholder__4%; + 23 | | } + 24 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:1:1] + 1 | ,-> .removed-214123 { + 2 | | flex-wrap: wrap; + 3 | | margin: __styled-jsx-placeholder__0; + 4 | | box-sizing: border-box; + 5 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:1:1] + 1 | ,-> .removed-214123 { + 2 | | flex-wrap: wrap; + 3 | | margin: __styled-jsx-placeholder__0; + 4 | | box-sizing: border-box; + 5 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:1:1] + 1 | .removed-214123 { + : ^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:1:1] + 1 | .removed-214123 { + : ^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:1:1] + 1 | .removed-214123 { + : ^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:1:1] + 1 | .removed-214123 { + : ^^^^^^^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:1:1] + 1 | .removed-214123 { + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:1:1] + 1 | .removed-214123 { + : ^^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:1:1] + 1 | ,-> .removed-214123 { + 2 | | flex-wrap: wrap; + 3 | | margin: __styled-jsx-placeholder__0; + 4 | | box-sizing: border-box; + 5 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:2:5] + 2 | flex-wrap: wrap; + : ^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:2:5] + 2 | flex-wrap: wrap; + : ^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:2:5] + 2 | flex-wrap: wrap; + : ^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:2:5] + 2 | flex-wrap: wrap; + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:2:5] + 2 | flex-wrap: wrap; + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:2:5] + 2 | flex-wrap: wrap; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:2:5] + 2 | flex-wrap: wrap; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:3:5] + 3 | margin: __styled-jsx-placeholder__0; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:3:5] + 3 | margin: __styled-jsx-placeholder__0; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:3:5] + 3 | margin: __styled-jsx-placeholder__0; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:3:5] + 3 | margin: __styled-jsx-placeholder__0; + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:3:5] + 3 | margin: __styled-jsx-placeholder__0; + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:3:5] + 3 | margin: __styled-jsx-placeholder__0; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:3:5] + 3 | margin: __styled-jsx-placeholder__0; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:4:5] + 4 | box-sizing: border-box; + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:4:5] + 4 | box-sizing: border-box; + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:4:5] + 4 | box-sizing: border-box; + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:4:5] + 4 | box-sizing: border-box; + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:4:5] + 4 | box-sizing: border-box; + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:4:5] + 4 | box-sizing: border-box; + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:4:5] + 4 | box-sizing: border-box; + : ^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | ,-> .removed-214123 :global(> .removed-214123-item) { + 8 | | padding: __styled-jsx-placeholder__1; + 9 | | flex-grow: 0; + 10 | | flex-basis: __styled-jsx-placeholder__2%; + 11 | | min-width: 0; + 12 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | ,-> .removed-214123 :global(> .removed-214123-item) { + 8 | | padding: __styled-jsx-placeholder__1; + 9 | | flex-grow: 0; + 10 | | flex-basis: __styled-jsx-placeholder__2%; + 11 | | min-width: 0; + 12 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x Delim { value: '>' } + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident { value: Atom('removed-214123-item' type=dynamic), raw: Atom('removed-214123-item' type=dynamic) } + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:7:1] + 7 | ,-> .removed-214123 :global(> .removed-214123-item) { + 8 | | padding: __styled-jsx-placeholder__1; + 9 | | flex-grow: 0; + 10 | | flex-basis: __styled-jsx-placeholder__2%; + 11 | | min-width: 0; + 12 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:8:5] + 8 | padding: __styled-jsx-placeholder__1; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:8:5] + 8 | padding: __styled-jsx-placeholder__1; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:8:5] + 8 | padding: __styled-jsx-placeholder__1; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:8:5] + 8 | padding: __styled-jsx-placeholder__1; + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:8:5] + 8 | padding: __styled-jsx-placeholder__1; + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:8:5] + 8 | padding: __styled-jsx-placeholder__1; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:8:5] + 8 | padding: __styled-jsx-placeholder__1; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:9:5] + 9 | flex-grow: 0; + : ^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:9:5] + 9 | flex-grow: 0; + : ^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:9:5] + 9 | flex-grow: 0; + : ^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:9:5] + 9 | flex-grow: 0; + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:9:5] + 9 | flex-grow: 0; + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:9:5] + 9 | flex-grow: 0; + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:9:5] + 9 | flex-grow: 0; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:10:5] + 10 | flex-basis: __styled-jsx-placeholder__2%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:10:5] + 10 | flex-basis: __styled-jsx-placeholder__2%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:10:5] + 10 | flex-basis: __styled-jsx-placeholder__2%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:10:5] + 10 | flex-basis: __styled-jsx-placeholder__2%; + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:10:5] + 10 | flex-basis: __styled-jsx-placeholder__2%; + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:10:5] + 10 | flex-basis: __styled-jsx-placeholder__2%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:10:5] + 10 | flex-basis: __styled-jsx-placeholder__2%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:10:5] + 10 | flex-basis: __styled-jsx-placeholder__2%; + : ^ + `---- + + x Delim { value: '%' } + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:10:5] + 10 | flex-basis: __styled-jsx-placeholder__2%; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:11:5] + 11 | min-width: 0; + : ^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:11:5] + 11 | min-width: 0; + : ^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:11:5] + 11 | min-width: 0; + : ^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:11:5] + 11 | min-width: 0; + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:11:5] + 11 | min-width: 0; + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:11:5] + 11 | min-width: 0; + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:11:5] + 11 | min-width: 0; + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:14:1] + 14 | ,-> @media screen { + 15 | | .removed-214123 :global(> .removed-214123-item) { + 16 | | flex-basis: __styled-jsx-placeholder__3%; + 17 | | } + 18 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:14:1] + 14 | ,-> @media screen { + 15 | | .removed-214123 :global(> .removed-214123-item) { + 16 | | flex-basis: __styled-jsx-placeholder__3%; + 17 | | } + 18 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:14:1] + 14 | @media screen { + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:14:1] + 14 | @media screen { + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:14:1] + 14 | @media screen { + : ^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:14:1] + 14 | @media screen { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:14:1] + 14 | @media screen { + : ^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:14:1] + 14 | ,-> @media screen { + 15 | | .removed-214123 :global(> .removed-214123-item) { + 16 | | flex-basis: __styled-jsx-placeholder__3%; + 17 | | } + 18 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | ,-> .removed-214123 :global(> .removed-214123-item) { + 16 | | flex-basis: __styled-jsx-placeholder__3%; + 17 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | ,-> .removed-214123 :global(> .removed-214123-item) { + 16 | | flex-basis: __styled-jsx-placeholder__3%; + 17 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | ,-> .removed-214123 :global(> .removed-214123-item) { + 16 | | flex-basis: __styled-jsx-placeholder__3%; + 17 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x Delim { value: '>' } + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident { value: Atom('removed-214123-item' type=dynamic), raw: Atom('removed-214123-item' type=dynamic) } + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:15:5] + 15 | ,-> .removed-214123 :global(> .removed-214123-item) { + 16 | | flex-basis: __styled-jsx-placeholder__3%; + 17 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:16:9] + 16 | flex-basis: __styled-jsx-placeholder__3%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:16:9] + 16 | flex-basis: __styled-jsx-placeholder__3%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:16:9] + 16 | flex-basis: __styled-jsx-placeholder__3%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:16:9] + 16 | flex-basis: __styled-jsx-placeholder__3%; + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:16:9] + 16 | flex-basis: __styled-jsx-placeholder__3%; + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:16:9] + 16 | flex-basis: __styled-jsx-placeholder__3%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:16:9] + 16 | flex-basis: __styled-jsx-placeholder__3%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:16:9] + 16 | flex-basis: __styled-jsx-placeholder__3%; + : ^ + `---- + + x Delim { value: '%' } + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:16:9] + 16 | flex-basis: __styled-jsx-placeholder__3%; + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:20:1] + 20 | ,-> @media screen { + 21 | | .removed-214123 :global(> .removed-214123-item) { + 22 | | flex-basis: __styled-jsx-placeholder__4%; + 23 | | } + 24 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:20:1] + 20 | ,-> @media screen { + 21 | | .removed-214123 :global(> .removed-214123-item) { + 22 | | flex-basis: __styled-jsx-placeholder__4%; + 23 | | } + 24 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:20:1] + 20 | @media screen { + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:20:1] + 20 | @media screen { + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:20:1] + 20 | @media screen { + : ^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:20:1] + 20 | @media screen { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:20:1] + 20 | @media screen { + : ^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:20:1] + 20 | ,-> @media screen { + 21 | | .removed-214123 :global(> .removed-214123-item) { + 22 | | flex-basis: __styled-jsx-placeholder__4%; + 23 | | } + 24 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | ,-> .removed-214123 :global(> .removed-214123-item) { + 22 | | flex-basis: __styled-jsx-placeholder__4%; + 23 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | ,-> .removed-214123 :global(> .removed-214123-item) { + 22 | | flex-basis: __styled-jsx-placeholder__4%; + 23 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | ,-> .removed-214123 :global(> .removed-214123-item) { + 22 | | flex-basis: __styled-jsx-placeholder__4%; + 23 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x Delim { value: '>' } + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident { value: Atom('removed-214123-item' type=dynamic), raw: Atom('removed-214123-item' type=dynamic) } + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | .removed-214123 :global(> .removed-214123-item) { + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:21:5] + 21 | ,-> .removed-214123 :global(> .removed-214123-item) { + 22 | | flex-basis: __styled-jsx-placeholder__4%; + 23 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:22:9] + 22 | flex-basis: __styled-jsx-placeholder__4%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:22:9] + 22 | flex-basis: __styled-jsx-placeholder__4%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:22:9] + 22 | flex-basis: __styled-jsx-placeholder__4%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:22:9] + 22 | flex-basis: __styled-jsx-placeholder__4%; + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:22:9] + 22 | flex-basis: __styled-jsx-placeholder__4%; + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:22:9] + 22 | flex-basis: __styled-jsx-placeholder__4%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:22:9] + 22 | flex-basis: __styled-jsx-placeholder__4%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:22:9] + 22 | flex-basis: __styled-jsx-placeholder__4%; + : ^ + `---- + + x Delim { value: '%' } + ,-[$DIR/tests/recovery/styled-jsx/1/input.css:22:9] + 22 | flex-basis: __styled-jsx-placeholder__4%; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/styled-jsx/2/span.rust-debug b/crates/swc_css_parser/tests/recovery/styled-jsx/2/span.rust-debug new file mode 100644 index 00000000000..3a1d3a884f6 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/styled-jsx/2/span.rust-debug @@ -0,0 +1,196 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | ,-> .a :global(> .b) { + 2 | | flex-basis: __styled-jsx-placeholder__0%; + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | ,-> .a :global(> .b) { + 2 | | flex-basis: __styled-jsx-placeholder__0%; + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | ,-> .a :global(> .b) { + 2 | | flex-basis: __styled-jsx-placeholder__0%; + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^^^^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^ + `---- + + x Delim { value: '>' } + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^ + `---- + + x Ident { value: Atom('b' type=inline), raw: Atom('b' type=inline) } + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | .a :global(> .b) { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:1:1] + 1 | ,-> .a :global(> .b) { + 2 | | flex-basis: __styled-jsx-placeholder__0%; + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:2:5] + 2 | flex-basis: __styled-jsx-placeholder__0%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:2:5] + 2 | flex-basis: __styled-jsx-placeholder__0%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:2:5] + 2 | flex-basis: __styled-jsx-placeholder__0%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:2:5] + 2 | flex-basis: __styled-jsx-placeholder__0%; + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:2:5] + 2 | flex-basis: __styled-jsx-placeholder__0%; + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:2:5] + 2 | flex-basis: __styled-jsx-placeholder__0%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:2:5] + 2 | flex-basis: __styled-jsx-placeholder__0%; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:2:5] + 2 | flex-basis: __styled-jsx-placeholder__0%; + : ^ + `---- + + x Delim { value: '%' } + ,-[$DIR/tests/recovery/styled-jsx/2/input.css:2:5] + 2 | flex-basis: __styled-jsx-placeholder__0%; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/unicode-range/span.rust-debug b/crates/swc_css_parser/tests/recovery/unicode-range/span.rust-debug new file mode 100644 index 00000000000..ca44ee8a083 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/unicode-range/span.rust-debug @@ -0,0 +1,212 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/unicode-range/input.css:1:1] + 1 | ,-> .class { + 2 | | unicode-range: U+1Z1ee1-FFFFFF; + 3 | | unicode-range: U+1e1ee1-FFZFFF; + 4 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/unicode-range/input.css:1:1] + 1 | ,-> .class { + 2 | | unicode-range: U+1Z1ee1-FFFFFF; + 3 | | unicode-range: U+1e1ee1-FFZFFF; + 4 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/unicode-range/input.css:1:1] + 1 | ,-> .class { + 2 | | unicode-range: U+1Z1ee1-FFFFFF; + 3 | | unicode-range: U+1e1ee1-FFZFFF; + 4 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/unicode-range/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/unicode-range/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/unicode-range/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/unicode-range/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/unicode-range/input.css:1:1] + 1 | .class { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/unicode-range/input.css:1:1] + 1 | .class { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/unicode-range/input.css:1:1] + 1 | ,-> .class { + 2 | | unicode-range: U+1Z1ee1-FFFFFF; + 3 | | unicode-range: U+1e1ee1-FFZFFF; + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/unicode-range/input.css:2:5] + 2 | unicode-range: U+1Z1ee1-FFFFFF; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/unicode-range/input.css:2:5] + 2 | unicode-range: U+1Z1ee1-FFFFFF; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/unicode-range/input.css:2:5] + 2 | unicode-range: U+1Z1ee1-FFFFFF; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/unicode-range/input.css:2:5] + 2 | unicode-range: U+1Z1ee1-FFFFFF; + : ^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/unicode-range/input.css:2:5] + 2 | unicode-range: U+1Z1ee1-FFFFFF; + : ^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/unicode-range/input.css:2:5] + 2 | unicode-range: U+1Z1ee1-FFFFFF; + : ^ + `---- + + x Ident { value: Atom('U' type=inline), raw: Atom('U' type=inline) } + ,-[$DIR/tests/recovery/unicode-range/input.css:2:5] + 2 | unicode-range: U+1Z1ee1-FFFFFF; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/unicode-range/input.css:2:5] + 2 | unicode-range: U+1Z1ee1-FFFFFF; + : ^^^^^^^^^^^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/unicode-range/input.css:2:5] + 2 | unicode-range: U+1Z1ee1-FFFFFF; + : ^^^^^^^^^^^^^^ + `---- + + x UnknownDimension + ,-[$DIR/tests/recovery/unicode-range/input.css:2:5] + 2 | unicode-range: U+1Z1ee1-FFFFFF; + : ^^^^^^^^^^^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/unicode-range/input.css:2:5] + 2 | unicode-range: U+1Z1ee1-FFFFFF; + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/unicode-range/input.css:2:5] + 2 | unicode-range: U+1Z1ee1-FFFFFF; + : ^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/unicode-range/input.css:3:5] + 3 | unicode-range: U+1e1ee1-FFZFFF; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/unicode-range/input.css:3:5] + 3 | unicode-range: U+1e1ee1-FFZFFF; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/unicode-range/input.css:3:5] + 3 | unicode-range: U+1e1ee1-FFZFFF; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/unicode-range/input.css:3:5] + 3 | unicode-range: U+1e1ee1-FFZFFF; + : ^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/unicode-range/input.css:3:5] + 3 | unicode-range: U+1e1ee1-FFZFFF; + : ^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/unicode-range/input.css:3:5] + 3 | unicode-range: U+1e1ee1-FFZFFF; + : ^ + `---- + + x Ident { value: Atom('U' type=inline), raw: Atom('U' type=inline) } + ,-[$DIR/tests/recovery/unicode-range/input.css:3:5] + 3 | unicode-range: U+1e1ee1-FFZFFF; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/unicode-range/input.css:3:5] + 3 | unicode-range: U+1e1ee1-FFZFFF; + : ^^^^^^^^^^^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/unicode-range/input.css:3:5] + 3 | unicode-range: U+1e1ee1-FFZFFF; + : ^^^^^^^^^^^^^^ + `---- + + x UnknownDimension + ,-[$DIR/tests/recovery/unicode-range/input.css:3:5] + 3 | unicode-range: U+1e1ee1-FFZFFF; + : ^^^^^^^^^^^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/unicode-range/input.css:3:5] + 3 | unicode-range: U+1e1ee1-FFZFFF; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/unicode-range/input.css:3:5] + 3 | unicode-range: U+1e1ee1-FFZFFF; + : ^^^^^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/at-keyword/1/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/at-keyword/1/span.rust-debug index 9af6da79dba..7bf950620fb 100644 --- a/crates/swc_css_parser/tests/recovery/value/at-keyword/1/span.rust-debug +++ b/crates/swc_css_parser/tests/recovery/value/at-keyword/1/span.rust-debug @@ -1,84 +1,108 @@ -error: Stylesheet - --> $DIR/tests/fixture/esbuild/misc/xVWGh0UpWtRUrgqbJEENWA/input.css:1:1 - | -1 | a { value: @x\2c } - | ^^^^^^^^^^^^^^^^^^ -error: Rule - --> $DIR/tests/fixture/esbuild/misc/xVWGh0UpWtRUrgqbJEENWA/input.css:1:1 - | -1 | a { value: @x\2c } - | ^^^^^^^^^^^^^^^^^^ + x Stylesheet + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^^^^^^^^^^^^^^^^^^ + `---- -error: QualifiedRule - --> $DIR/tests/fixture/esbuild/misc/xVWGh0UpWtRUrgqbJEENWA/input.css:1:1 - | -1 | a { value: @x\2c } - | ^^^^^^^^^^^^^^^^^^ + x Rule + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^^^^^^^^^^^^^^^^^^ + `---- -error: SelectorList - --> $DIR/tests/fixture/esbuild/misc/xVWGh0UpWtRUrgqbJEENWA/input.css:1:1 - | -1 | a { value: @x\2c } - | ^ + x QualifiedRule + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^^^^^^^^^^^^^^^^^^ + `---- -error: ComplexSelector - --> $DIR/tests/fixture/esbuild/misc/xVWGh0UpWtRUrgqbJEENWA/input.css:1:1 - | -1 | a { value: @x\2c } - | ^ + x SelectorList + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^ + `---- -error: CompoundSelector - --> $DIR/tests/fixture/esbuild/misc/xVWGh0UpWtRUrgqbJEENWA/input.css:1:1 - | -1 | a { value: @x\2c } - | ^ + x ComplexSelector + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^ + `---- -error: TypeSelector - --> $DIR/tests/fixture/esbuild/misc/xVWGh0UpWtRUrgqbJEENWA/input.css:1:1 - | -1 | a { value: @x\2c } - | ^ + x CompoundSelector + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^ + `---- -error: Ident - --> $DIR/tests/fixture/esbuild/misc/xVWGh0UpWtRUrgqbJEENWA/input.css:1:1 - | -1 | a { value: @x\2c } - | ^ + x TypeSelector + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^ + `---- -error: Block - --> $DIR/tests/fixture/esbuild/misc/xVWGh0UpWtRUrgqbJEENWA/input.css:1:3 - | -1 | a { value: @x\2c } - | ^^^^^^^^^^^^^^^^ + x TagNameSelector + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^ + `---- -error: Tokens - --> $DIR/tests/fixture/esbuild/misc/xVWGh0UpWtRUrgqbJEENWA/input.css:1:5 - | -1 | a { value: @x\2c } - | ^^^^^^^^^^^^^ + x WqName + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^ + `---- -error: Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/xVWGh0UpWtRUrgqbJEENWA/input.css:1:5 - | -1 | a { value: @x\2c } - | ^^^^^ + x Ident + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^ + `---- -error: Colon - --> $DIR/tests/fixture/esbuild/misc/xVWGh0UpWtRUrgqbJEENWA/input.css:1:10 - | -1 | a { value: @x\2c } - | ^ + x SimpleBlock + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^^^^^^^^^^^^^^^^ + `---- -error: WhiteSpace { value: Atom(' ' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/xVWGh0UpWtRUrgqbJEENWA/input.css:1:11 - | -1 | a { value: @x\2c } - | ^ + x ComponentValue + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^^^^^^^^^^^^^ + `---- -error: AtKeyword { value: Atom('x,' type=inline), raw: Atom('x\2c ' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/xVWGh0UpWtRUrgqbJEENWA/input.css:1:12 - | -1 | a { value: @x\2c } - | ^^^^^^ + x StyleBlock + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^^^^^^^^^^^^^ + `---- + x Declaration + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^^^^^^ + `---- + + x AtKeyword { value: Atom('x,' type=inline), raw: Atom('x\2c ' type=inline) } + ,-[$DIR/tests/recovery/value/at-keyword/1/input.css:1:1] + 1 | a { value: @x\2c } + : ^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/at-keyword/2/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/at-keyword/2/span.rust-debug index 9a523f53bc0..b997967a0b5 100644 --- a/crates/swc_css_parser/tests/recovery/value/at-keyword/2/span.rust-debug +++ b/crates/swc_css_parser/tests/recovery/value/at-keyword/2/span.rust-debug @@ -1,90 +1,108 @@ -error: Stylesheet - --> $DIR/tests/fixture/esbuild/misc/xVqT8wNU4CEhaDlbLxGyaw/input.css:1:1 - | -1 | a { value: @\,x } - | ^^^^^^^^^^^^^^^^^ -error: Rule - --> $DIR/tests/fixture/esbuild/misc/xVqT8wNU4CEhaDlbLxGyaw/input.css:1:1 - | -1 | a { value: @\,x } - | ^^^^^^^^^^^^^^^^^ + x Stylesheet + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^^^^^^^^^^^^^^^^^ + `---- -error: QualifiedRule - --> $DIR/tests/fixture/esbuild/misc/xVqT8wNU4CEhaDlbLxGyaw/input.css:1:1 - | -1 | a { value: @\,x } - | ^^^^^^^^^^^^^^^^^ + x Rule + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^^^^^^^^^^^^^^^^^ + `---- -error: SelectorList - --> $DIR/tests/fixture/esbuild/misc/xVqT8wNU4CEhaDlbLxGyaw/input.css:1:1 - | -1 | a { value: @\,x } - | ^ + x QualifiedRule + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^^^^^^^^^^^^^^^^^ + `---- -error: ComplexSelector - --> $DIR/tests/fixture/esbuild/misc/xVqT8wNU4CEhaDlbLxGyaw/input.css:1:1 - | -1 | a { value: @\,x } - | ^ + x SelectorList + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^ + `---- -error: CompoundSelector - --> $DIR/tests/fixture/esbuild/misc/xVqT8wNU4CEhaDlbLxGyaw/input.css:1:1 - | -1 | a { value: @\,x } - | ^ + x ComplexSelector + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^ + `---- -error: TypeSelector - --> $DIR/tests/fixture/esbuild/misc/xVqT8wNU4CEhaDlbLxGyaw/input.css:1:1 - | -1 | a { value: @\,x } - | ^ + x CompoundSelector + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^ + `---- -error: Ident - --> $DIR/tests/fixture/esbuild/misc/xVqT8wNU4CEhaDlbLxGyaw/input.css:1:1 - | -1 | a { value: @\,x } - | ^ + x TypeSelector + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^ + `---- -error: Block - --> $DIR/tests/fixture/esbuild/misc/xVqT8wNU4CEhaDlbLxGyaw/input.css:1:3 - | -1 | a { value: @\,x } - | ^^^^^^^^^^^^^^^ + x TagNameSelector + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^ + `---- -error: Tokens - --> $DIR/tests/fixture/esbuild/misc/xVqT8wNU4CEhaDlbLxGyaw/input.css:1:5 - | -1 | a { value: @\,x } - | ^^^^^^^^^^^^ + x WqName + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^ + `---- -error: Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/xVqT8wNU4CEhaDlbLxGyaw/input.css:1:5 - | -1 | a { value: @\,x } - | ^^^^^ + x Ident + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^ + `---- -error: Colon - --> $DIR/tests/fixture/esbuild/misc/xVqT8wNU4CEhaDlbLxGyaw/input.css:1:10 - | -1 | a { value: @\,x } - | ^ + x SimpleBlock + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^^^^^^^^^^^^^^^ + `---- -error: WhiteSpace { value: Atom(' ' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/xVqT8wNU4CEhaDlbLxGyaw/input.css:1:11 - | -1 | a { value: @\,x } - | ^ + x ComponentValue + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^^^^^^^^^^^ + `---- -error: AtKeyword { value: Atom(',x' type=inline), raw: Atom('\,x' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/xVqT8wNU4CEhaDlbLxGyaw/input.css:1:12 - | -1 | a { value: @\,x } - | ^^^^ + x StyleBlock + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^^^^^^^^^^^ + `---- -error: WhiteSpace { value: Atom(' ' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/xVqT8wNU4CEhaDlbLxGyaw/input.css:1:16 - | -1 | a { value: @\,x } - | ^ + x Declaration + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^^^^^^^^^^^ + `---- + x DeclarationName + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^^^^ + `---- + + x AtKeyword { value: Atom(',x' type=inline), raw: Atom('\,x' type=inline) } + ,-[$DIR/tests/recovery/value/at-keyword/2/input.css:1:1] + 1 | a { value: @\,x } + : ^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/at-keyword/3/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/at-keyword/3/span.rust-debug index 3c9ded95908..836457e72ca 100644 --- a/crates/swc_css_parser/tests/recovery/value/at-keyword/3/span.rust-debug +++ b/crates/swc_css_parser/tests/recovery/value/at-keyword/3/span.rust-debug @@ -1,90 +1,108 @@ -error: Stylesheet - --> $DIR/tests/fixture/esbuild/misc/vK9rUBJhwa0FsjBe18lL0w/input.css:1:1 - | -1 | a { value: @k\65yword } - | ^^^^^^^^^^^^^^^^^^^^^^^ -error: Rule - --> $DIR/tests/fixture/esbuild/misc/vK9rUBJhwa0FsjBe18lL0w/input.css:1:1 - | -1 | a { value: @k\65yword } - | ^^^^^^^^^^^^^^^^^^^^^^^ + x Stylesheet + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- -error: QualifiedRule - --> $DIR/tests/fixture/esbuild/misc/vK9rUBJhwa0FsjBe18lL0w/input.css:1:1 - | -1 | a { value: @k\65yword } - | ^^^^^^^^^^^^^^^^^^^^^^^ + x Rule + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- -error: SelectorList - --> $DIR/tests/fixture/esbuild/misc/vK9rUBJhwa0FsjBe18lL0w/input.css:1:1 - | -1 | a { value: @k\65yword } - | ^ + x QualifiedRule + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- -error: ComplexSelector - --> $DIR/tests/fixture/esbuild/misc/vK9rUBJhwa0FsjBe18lL0w/input.css:1:1 - | -1 | a { value: @k\65yword } - | ^ + x SelectorList + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^ + `---- -error: CompoundSelector - --> $DIR/tests/fixture/esbuild/misc/vK9rUBJhwa0FsjBe18lL0w/input.css:1:1 - | -1 | a { value: @k\65yword } - | ^ + x ComplexSelector + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^ + `---- -error: TypeSelector - --> $DIR/tests/fixture/esbuild/misc/vK9rUBJhwa0FsjBe18lL0w/input.css:1:1 - | -1 | a { value: @k\65yword } - | ^ + x CompoundSelector + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^ + `---- -error: Ident - --> $DIR/tests/fixture/esbuild/misc/vK9rUBJhwa0FsjBe18lL0w/input.css:1:1 - | -1 | a { value: @k\65yword } - | ^ + x TypeSelector + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^ + `---- -error: Block - --> $DIR/tests/fixture/esbuild/misc/vK9rUBJhwa0FsjBe18lL0w/input.css:1:3 - | -1 | a { value: @k\65yword } - | ^^^^^^^^^^^^^^^^^^^^^ + x TagNameSelector + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^ + `---- -error: Tokens - --> $DIR/tests/fixture/esbuild/misc/vK9rUBJhwa0FsjBe18lL0w/input.css:1:5 - | -1 | a { value: @k\65yword } - | ^^^^^^^^^^^^^^^^^^ + x WqName + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^ + `---- -error: Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/vK9rUBJhwa0FsjBe18lL0w/input.css:1:5 - | -1 | a { value: @k\65yword } - | ^^^^^ + x Ident + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^ + `---- -error: Colon - --> $DIR/tests/fixture/esbuild/misc/vK9rUBJhwa0FsjBe18lL0w/input.css:1:10 - | -1 | a { value: @k\65yword } - | ^ + x SimpleBlock + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^^^^^^^^^^^^^^^^^^^^^ + `---- -error: WhiteSpace { value: Atom(' ' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/vK9rUBJhwa0FsjBe18lL0w/input.css:1:11 - | -1 | a { value: @k\65yword } - | ^ + x ComponentValue + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^^^^^^^^^^^^^^^^^ + `---- -error: AtKeyword { value: Atom('keyword' type=inline), raw: Atom('k\65yword' type=dynamic) } - --> $DIR/tests/fixture/esbuild/misc/vK9rUBJhwa0FsjBe18lL0w/input.css:1:12 - | -1 | a { value: @k\65yword } - | ^^^^^^^^^^ + x StyleBlock + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^^^^^^^^^^^^^^^^^ + `---- -error: WhiteSpace { value: Atom(' ' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/vK9rUBJhwa0FsjBe18lL0w/input.css:1:22 - | -1 | a { value: @k\65yword } - | ^ + x Declaration + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^^^^^^^^^^^^^^^^^ + `---- + x DeclarationName + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^^^^^^^^^^ + `---- + + x AtKeyword { value: Atom('keyword' type=inline), raw: Atom('k\65yword' type=dynamic) } + ,-[$DIR/tests/recovery/value/at-keyword/3/input.css:1:1] + 1 | a { value: @k\65yword } + : ^^^^^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/at-keyword/4/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/at-keyword/4/span.rust-debug index 6c5cd18d57d..5b9a1be99a2 100644 --- a/crates/swc_css_parser/tests/recovery/value/at-keyword/4/span.rust-debug +++ b/crates/swc_css_parser/tests/recovery/value/at-keyword/4/span.rust-debug @@ -1,90 +1,108 @@ -error: Stylesheet - --> $DIR/tests/fixture/esbuild/misc/mn3ADjaNJuY6IF0Nqms-VQ/input.css:1:1 - | -1 | a { value: @\2cx } - | ^^^^^^^^^^^^^^^^^^ -error: Rule - --> $DIR/tests/fixture/esbuild/misc/mn3ADjaNJuY6IF0Nqms-VQ/input.css:1:1 - | -1 | a { value: @\2cx } - | ^^^^^^^^^^^^^^^^^^ + x Stylesheet + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^^^^^^^^^^^^^^^^^^ + `---- -error: QualifiedRule - --> $DIR/tests/fixture/esbuild/misc/mn3ADjaNJuY6IF0Nqms-VQ/input.css:1:1 - | -1 | a { value: @\2cx } - | ^^^^^^^^^^^^^^^^^^ + x Rule + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^^^^^^^^^^^^^^^^^^ + `---- -error: SelectorList - --> $DIR/tests/fixture/esbuild/misc/mn3ADjaNJuY6IF0Nqms-VQ/input.css:1:1 - | -1 | a { value: @\2cx } - | ^ + x QualifiedRule + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^^^^^^^^^^^^^^^^^^ + `---- -error: ComplexSelector - --> $DIR/tests/fixture/esbuild/misc/mn3ADjaNJuY6IF0Nqms-VQ/input.css:1:1 - | -1 | a { value: @\2cx } - | ^ + x SelectorList + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^ + `---- -error: CompoundSelector - --> $DIR/tests/fixture/esbuild/misc/mn3ADjaNJuY6IF0Nqms-VQ/input.css:1:1 - | -1 | a { value: @\2cx } - | ^ + x ComplexSelector + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^ + `---- -error: TypeSelector - --> $DIR/tests/fixture/esbuild/misc/mn3ADjaNJuY6IF0Nqms-VQ/input.css:1:1 - | -1 | a { value: @\2cx } - | ^ + x CompoundSelector + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^ + `---- -error: Ident - --> $DIR/tests/fixture/esbuild/misc/mn3ADjaNJuY6IF0Nqms-VQ/input.css:1:1 - | -1 | a { value: @\2cx } - | ^ + x TypeSelector + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^ + `---- -error: Block - --> $DIR/tests/fixture/esbuild/misc/mn3ADjaNJuY6IF0Nqms-VQ/input.css:1:3 - | -1 | a { value: @\2cx } - | ^^^^^^^^^^^^^^^^ + x TagNameSelector + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^ + `---- -error: Tokens - --> $DIR/tests/fixture/esbuild/misc/mn3ADjaNJuY6IF0Nqms-VQ/input.css:1:5 - | -1 | a { value: @\2cx } - | ^^^^^^^^^^^^^ + x WqName + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^ + `---- -error: Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/mn3ADjaNJuY6IF0Nqms-VQ/input.css:1:5 - | -1 | a { value: @\2cx } - | ^^^^^ + x Ident + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^ + `---- -error: Colon - --> $DIR/tests/fixture/esbuild/misc/mn3ADjaNJuY6IF0Nqms-VQ/input.css:1:10 - | -1 | a { value: @\2cx } - | ^ + x SimpleBlock + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^^^^^^^^^^^^^^^^ + `---- -error: WhiteSpace { value: Atom(' ' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/mn3ADjaNJuY6IF0Nqms-VQ/input.css:1:11 - | -1 | a { value: @\2cx } - | ^ + x ComponentValue + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^^^^^^^^^^^^ + `---- -error: AtKeyword { value: Atom(',x' type=inline), raw: Atom('\2cx' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/mn3ADjaNJuY6IF0Nqms-VQ/input.css:1:12 - | -1 | a { value: @\2cx } - | ^^^^^ + x StyleBlock + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^^^^^^^^^^^^ + `---- -error: WhiteSpace { value: Atom(' ' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/mn3ADjaNJuY6IF0Nqms-VQ/input.css:1:17 - | -1 | a { value: @\2cx } - | ^ + x Declaration + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^^^^^^^^^^^^ + `---- + x DeclarationName + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^^^^^ + `---- + + x AtKeyword { value: Atom(',x' type=inline), raw: Atom('\2cx' type=inline) } + ,-[$DIR/tests/recovery/value/at-keyword/4/input.css:1:1] + 1 | a { value: @\2cx } + : ^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/at-keyword/5/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/at-keyword/5/span.rust-debug index 068f9e1a9c9..1151b4d39de 100644 --- a/crates/swc_css_parser/tests/recovery/value/at-keyword/5/span.rust-debug +++ b/crates/swc_css_parser/tests/recovery/value/at-keyword/5/span.rust-debug @@ -1,90 +1,108 @@ -error: Stylesheet - --> $DIR/tests/fixture/esbuild/misc/d8Q6MceynW9-IQJ4l0OGzA/input.css:1:1 - | -1 | a { value: @x\, } - | ^^^^^^^^^^^^^^^^^ -error: Rule - --> $DIR/tests/fixture/esbuild/misc/d8Q6MceynW9-IQJ4l0OGzA/input.css:1:1 - | -1 | a { value: @x\, } - | ^^^^^^^^^^^^^^^^^ + x Stylesheet + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^^^^^^^^^^^^^^^^^ + `---- -error: QualifiedRule - --> $DIR/tests/fixture/esbuild/misc/d8Q6MceynW9-IQJ4l0OGzA/input.css:1:1 - | -1 | a { value: @x\, } - | ^^^^^^^^^^^^^^^^^ + x Rule + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^^^^^^^^^^^^^^^^^ + `---- -error: SelectorList - --> $DIR/tests/fixture/esbuild/misc/d8Q6MceynW9-IQJ4l0OGzA/input.css:1:1 - | -1 | a { value: @x\, } - | ^ + x QualifiedRule + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^^^^^^^^^^^^^^^^^ + `---- -error: ComplexSelector - --> $DIR/tests/fixture/esbuild/misc/d8Q6MceynW9-IQJ4l0OGzA/input.css:1:1 - | -1 | a { value: @x\, } - | ^ + x SelectorList + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^ + `---- -error: CompoundSelector - --> $DIR/tests/fixture/esbuild/misc/d8Q6MceynW9-IQJ4l0OGzA/input.css:1:1 - | -1 | a { value: @x\, } - | ^ + x ComplexSelector + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^ + `---- -error: TypeSelector - --> $DIR/tests/fixture/esbuild/misc/d8Q6MceynW9-IQJ4l0OGzA/input.css:1:1 - | -1 | a { value: @x\, } - | ^ + x CompoundSelector + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^ + `---- -error: Ident - --> $DIR/tests/fixture/esbuild/misc/d8Q6MceynW9-IQJ4l0OGzA/input.css:1:1 - | -1 | a { value: @x\, } - | ^ + x TypeSelector + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^ + `---- -error: Block - --> $DIR/tests/fixture/esbuild/misc/d8Q6MceynW9-IQJ4l0OGzA/input.css:1:3 - | -1 | a { value: @x\, } - | ^^^^^^^^^^^^^^^ + x TagNameSelector + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^ + `---- -error: Tokens - --> $DIR/tests/fixture/esbuild/misc/d8Q6MceynW9-IQJ4l0OGzA/input.css:1:5 - | -1 | a { value: @x\, } - | ^^^^^^^^^^^^ + x WqName + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^ + `---- -error: Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/d8Q6MceynW9-IQJ4l0OGzA/input.css:1:5 - | -1 | a { value: @x\, } - | ^^^^^ + x Ident + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^ + `---- -error: Colon - --> $DIR/tests/fixture/esbuild/misc/d8Q6MceynW9-IQJ4l0OGzA/input.css:1:10 - | -1 | a { value: @x\, } - | ^ + x SimpleBlock + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^^^^^^^^^^^^^^^ + `---- -error: WhiteSpace { value: Atom(' ' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/d8Q6MceynW9-IQJ4l0OGzA/input.css:1:11 - | -1 | a { value: @x\, } - | ^ + x ComponentValue + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^^^^^^^^^^^ + `---- -error: AtKeyword { value: Atom('x,' type=inline), raw: Atom('x\,' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/d8Q6MceynW9-IQJ4l0OGzA/input.css:1:12 - | -1 | a { value: @x\, } - | ^^^^ + x StyleBlock + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^^^^^^^^^^^ + `---- -error: WhiteSpace { value: Atom(' ' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/d8Q6MceynW9-IQJ4l0OGzA/input.css:1:16 - | -1 | a { value: @x\, } - | ^ + x Declaration + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^^^^^^^^^^^ + `---- + x DeclarationName + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^^^^ + `---- + + x AtKeyword { value: Atom('x,' type=inline), raw: Atom('x\,' type=inline) } + ,-[$DIR/tests/recovery/value/at-keyword/5/input.css:1:1] + 1 | a { value: @x\, } + : ^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/at-keyword/6/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/at-keyword/6/span.rust-debug index 4947b387d46..4b6cc851f13 100644 --- a/crates/swc_css_parser/tests/recovery/value/at-keyword/6/span.rust-debug +++ b/crates/swc_css_parser/tests/recovery/value/at-keyword/6/span.rust-debug @@ -1,90 +1,108 @@ -error: Stylesheet - --> $DIR/tests/fixture/esbuild/misc/CiejHTPFd8U5szvvY3uRjw/input.css:1:1 - | -1 | a { value: @\6beyword } - | ^^^^^^^^^^^^^^^^^^^^^^^ -error: Rule - --> $DIR/tests/fixture/esbuild/misc/CiejHTPFd8U5szvvY3uRjw/input.css:1:1 - | -1 | a { value: @\6beyword } - | ^^^^^^^^^^^^^^^^^^^^^^^ + x Stylesheet + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- -error: QualifiedRule - --> $DIR/tests/fixture/esbuild/misc/CiejHTPFd8U5szvvY3uRjw/input.css:1:1 - | -1 | a { value: @\6beyword } - | ^^^^^^^^^^^^^^^^^^^^^^^ + x Rule + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- -error: SelectorList - --> $DIR/tests/fixture/esbuild/misc/CiejHTPFd8U5szvvY3uRjw/input.css:1:1 - | -1 | a { value: @\6beyword } - | ^ + x QualifiedRule + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^^^^^^^^^^^^^^^^^^^^^^^ + `---- -error: ComplexSelector - --> $DIR/tests/fixture/esbuild/misc/CiejHTPFd8U5szvvY3uRjw/input.css:1:1 - | -1 | a { value: @\6beyword } - | ^ + x SelectorList + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^ + `---- -error: CompoundSelector - --> $DIR/tests/fixture/esbuild/misc/CiejHTPFd8U5szvvY3uRjw/input.css:1:1 - | -1 | a { value: @\6beyword } - | ^ + x ComplexSelector + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^ + `---- -error: TypeSelector - --> $DIR/tests/fixture/esbuild/misc/CiejHTPFd8U5szvvY3uRjw/input.css:1:1 - | -1 | a { value: @\6beyword } - | ^ + x CompoundSelector + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^ + `---- -error: Ident - --> $DIR/tests/fixture/esbuild/misc/CiejHTPFd8U5szvvY3uRjw/input.css:1:1 - | -1 | a { value: @\6beyword } - | ^ + x TypeSelector + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^ + `---- -error: Block - --> $DIR/tests/fixture/esbuild/misc/CiejHTPFd8U5szvvY3uRjw/input.css:1:3 - | -1 | a { value: @\6beyword } - | ^^^^^^^^^^^^^^^^^^^^^ + x TagNameSelector + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^ + `---- -error: Tokens - --> $DIR/tests/fixture/esbuild/misc/CiejHTPFd8U5szvvY3uRjw/input.css:1:5 - | -1 | a { value: @\6beyword } - | ^^^^^^^^^^^^^^^^^^ + x WqName + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^ + `---- -error: Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/CiejHTPFd8U5szvvY3uRjw/input.css:1:5 - | -1 | a { value: @\6beyword } - | ^^^^^ + x Ident + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^ + `---- -error: Colon - --> $DIR/tests/fixture/esbuild/misc/CiejHTPFd8U5szvvY3uRjw/input.css:1:10 - | -1 | a { value: @\6beyword } - | ^ + x SimpleBlock + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^^^^^^^^^^^^^^^^^^^^^ + `---- -error: WhiteSpace { value: Atom(' ' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/CiejHTPFd8U5szvvY3uRjw/input.css:1:11 - | -1 | a { value: @\6beyword } - | ^ + x ComponentValue + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^^^^^^^^^^^^^^^^^ + `---- -error: AtKeyword { value: Atom('Ú¾yword' type=inline), raw: Atom('\6beyword' type=dynamic) } - --> $DIR/tests/fixture/esbuild/misc/CiejHTPFd8U5szvvY3uRjw/input.css:1:12 - | -1 | a { value: @\6beyword } - | ^^^^^^^^^^ + x StyleBlock + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^^^^^^^^^^^^^^^^^ + `---- -error: WhiteSpace { value: Atom(' ' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/CiejHTPFd8U5szvvY3uRjw/input.css:1:22 - | -1 | a { value: @\6beyword } - | ^ + x Declaration + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^^^^^^^^^^^^^^^^^ + `---- + x DeclarationName + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^^^^^^^^^^ + `---- + + x AtKeyword { value: Atom('Ú¾yword' type=inline), raw: Atom('\6beyword' type=dynamic) } + ,-[$DIR/tests/recovery/value/at-keyword/6/input.css:1:1] + 1 | a { value: @\6beyword } + : ^^^^^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/at-keyword/7/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/at-keyword/7/span.rust-debug index 6ab28d3f3fd..505a49be98e 100644 --- a/crates/swc_css_parser/tests/recovery/value/at-keyword/7/span.rust-debug +++ b/crates/swc_css_parser/tests/recovery/value/at-keyword/7/span.rust-debug @@ -1,90 +1,108 @@ -error: Stylesheet - --> $DIR/tests/fixture/esbuild/misc/4-S1C8qZOZ6Mm7WdRUH72Q/input.css:1:1 - | -1 | a { value: @\6b eyword } - | ^^^^^^^^^^^^^^^^^^^^^^^^ -error: Rule - --> $DIR/tests/fixture/esbuild/misc/4-S1C8qZOZ6Mm7WdRUH72Q/input.css:1:1 - | -1 | a { value: @\6b eyword } - | ^^^^^^^^^^^^^^^^^^^^^^^^ + x Stylesheet + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- -error: QualifiedRule - --> $DIR/tests/fixture/esbuild/misc/4-S1C8qZOZ6Mm7WdRUH72Q/input.css:1:1 - | -1 | a { value: @\6b eyword } - | ^^^^^^^^^^^^^^^^^^^^^^^^ + x Rule + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- -error: SelectorList - --> $DIR/tests/fixture/esbuild/misc/4-S1C8qZOZ6Mm7WdRUH72Q/input.css:1:1 - | -1 | a { value: @\6b eyword } - | ^ + x QualifiedRule + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- -error: ComplexSelector - --> $DIR/tests/fixture/esbuild/misc/4-S1C8qZOZ6Mm7WdRUH72Q/input.css:1:1 - | -1 | a { value: @\6b eyword } - | ^ + x SelectorList + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^ + `---- -error: CompoundSelector - --> $DIR/tests/fixture/esbuild/misc/4-S1C8qZOZ6Mm7WdRUH72Q/input.css:1:1 - | -1 | a { value: @\6b eyword } - | ^ + x ComplexSelector + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^ + `---- -error: TypeSelector - --> $DIR/tests/fixture/esbuild/misc/4-S1C8qZOZ6Mm7WdRUH72Q/input.css:1:1 - | -1 | a { value: @\6b eyword } - | ^ + x CompoundSelector + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^ + `---- -error: Ident - --> $DIR/tests/fixture/esbuild/misc/4-S1C8qZOZ6Mm7WdRUH72Q/input.css:1:1 - | -1 | a { value: @\6b eyword } - | ^ + x TypeSelector + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^ + `---- -error: Block - --> $DIR/tests/fixture/esbuild/misc/4-S1C8qZOZ6Mm7WdRUH72Q/input.css:1:3 - | -1 | a { value: @\6b eyword } - | ^^^^^^^^^^^^^^^^^^^^^^ + x TagNameSelector + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^ + `---- -error: Tokens - --> $DIR/tests/fixture/esbuild/misc/4-S1C8qZOZ6Mm7WdRUH72Q/input.css:1:5 - | -1 | a { value: @\6b eyword } - | ^^^^^^^^^^^^^^^^^^^ + x WqName + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^ + `---- -error: Ident { value: Atom('value' type=inline), raw: Atom('value' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/4-S1C8qZOZ6Mm7WdRUH72Q/input.css:1:5 - | -1 | a { value: @\6b eyword } - | ^^^^^ + x Ident + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^ + `---- -error: Colon - --> $DIR/tests/fixture/esbuild/misc/4-S1C8qZOZ6Mm7WdRUH72Q/input.css:1:10 - | -1 | a { value: @\6b eyword } - | ^ + x SimpleBlock + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- -error: WhiteSpace { value: Atom(' ' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/4-S1C8qZOZ6Mm7WdRUH72Q/input.css:1:11 - | -1 | a { value: @\6b eyword } - | ^ + x ComponentValue + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^^^^^^^^^^^^^^^^^^ + `---- -error: AtKeyword { value: Atom('keyword' type=inline), raw: Atom('\6b eyword' type=dynamic) } - --> $DIR/tests/fixture/esbuild/misc/4-S1C8qZOZ6Mm7WdRUH72Q/input.css:1:12 - | -1 | a { value: @\6b eyword } - | ^^^^^^^^^^^ + x StyleBlock + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^^^^^^^^^^^^^^^^^^ + `---- -error: WhiteSpace { value: Atom(' ' type=inline) } - --> $DIR/tests/fixture/esbuild/misc/4-S1C8qZOZ6Mm7WdRUH72Q/input.css:1:23 - | -1 | a { value: @\6b eyword } - | ^ + x Declaration + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^^^^^^^^^^^^^^^^^^ + `---- + x DeclarationName + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^^^^^^^^^^^ + `---- + + x AtKeyword { value: Atom('keyword' type=inline), raw: Atom('\6b eyword' type=dynamic) } + ,-[$DIR/tests/recovery/value/at-keyword/7/input.css:1:1] + 1 | a { value: @\6b eyword } + : ^^^^^^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/custom-properties/exclamation/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/custom-properties/exclamation/span.rust-debug new file mode 100644 index 00000000000..47f1168b5e6 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/value/custom-properties/exclamation/span.rust-debug @@ -0,0 +1,709 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:1:1] + 1 | ,-> .class {--foo:!; } + 2 | | + 3 | | .class-1 { + 4 | | --foo:!; + 5 | | color: red; + 6 | | } + 7 | | + 8 | | .class-2 { + 9 | | color: red; + 10 | | --foo:!; + 11 | | } + 12 | | + 13 | | .class-3 { + 14 | | --foo: !; + 15 | | --foo: bar; + 16 | | } + 17 | | + 18 | | .class-4 { + 19 | | --foo: bar; + 20 | | --foo: !; + 21 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:1:1] + 1 | .class {--foo:!; } + : ^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:1:1] + 1 | .class {--foo:!; } + : ^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:1:1] + 1 | .class {--foo:!; } + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:1:1] + 1 | .class {--foo:!; } + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:1:1] + 1 | .class {--foo:!; } + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:1:1] + 1 | .class {--foo:!; } + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:1:1] + 1 | .class {--foo:!; } + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:1:1] + 1 | .class {--foo:!; } + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:1:1] + 1 | .class {--foo:!; } + : ^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:1:1] + 1 | .class {--foo:!; } + : ^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:1:1] + 1 | .class {--foo:!; } + : ^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:1:1] + 1 | .class {--foo:!; } + : ^^^^^^^^ + `---- + + x Ident { value: Atom('--foo' type=inline), raw: Atom('--foo' type=inline) } + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:1:1] + 1 | .class {--foo:!; } + : ^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:1:1] + 1 | .class {--foo:!; } + : ^ + `---- + + x Delim { value: '!' } + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:1:1] + 1 | .class {--foo:!; } + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:1:1] + 1 | .class {--foo:!; } + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:3:1] + 3 | ,-> .class-1 { + 4 | | --foo:!; + 5 | | color: red; + 6 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:3:1] + 3 | ,-> .class-1 { + 4 | | --foo:!; + 5 | | color: red; + 6 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:3:1] + 3 | .class-1 { + : ^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:3:1] + 3 | .class-1 { + : ^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:3:1] + 3 | .class-1 { + : ^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:3:1] + 3 | .class-1 { + : ^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:3:1] + 3 | .class-1 { + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:3:1] + 3 | .class-1 { + : ^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:3:1] + 3 | ,-> .class-1 { + 4 | | --foo:!; + 5 | | color: red; + 6 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:4:5] + 4 | --foo:!; + : ^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:4:5] + 4 | --foo:!; + : ^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:4:5] + 4 | --foo:!; + : ^^^^^^^^ + `---- + + x Ident { value: Atom('--foo' type=inline), raw: Atom('--foo' type=inline) } + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:4:5] + 4 | --foo:!; + : ^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:4:5] + 4 | --foo:!; + : ^ + `---- + + x Delim { value: '!' } + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:4:5] + 4 | --foo:!; + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:4:5] + 4 | --foo:!; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:5:5] + 5 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:5:5] + 5 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:5:5] + 5 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:5:5] + 5 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:5:5] + 5 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:5:5] + 5 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:5:5] + 5 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:8:1] + 8 | ,-> .class-2 { + 9 | | color: red; + 10 | | --foo:!; + 11 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:8:1] + 8 | ,-> .class-2 { + 9 | | color: red; + 10 | | --foo:!; + 11 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:8:1] + 8 | .class-2 { + : ^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:8:1] + 8 | .class-2 { + : ^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:8:1] + 8 | .class-2 { + : ^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:8:1] + 8 | .class-2 { + : ^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:8:1] + 8 | .class-2 { + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:8:1] + 8 | .class-2 { + : ^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:8:1] + 8 | ,-> .class-2 { + 9 | | color: red; + 10 | | --foo:!; + 11 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:9:5] + 9 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:9:5] + 9 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:9:5] + 9 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:9:5] + 9 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:9:5] + 9 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:9:5] + 9 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:9:5] + 9 | color: red; + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:10:5] + 10 | --foo:!; + : ^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:10:5] + 10 | --foo:!; + : ^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:10:5] + 10 | --foo:!; + : ^^^^^^^^ + `---- + + x Ident { value: Atom('--foo' type=inline), raw: Atom('--foo' type=inline) } + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:10:5] + 10 | --foo:!; + : ^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:10:5] + 10 | --foo:!; + : ^ + `---- + + x Delim { value: '!' } + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:10:5] + 10 | --foo:!; + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:10:5] + 10 | --foo:!; + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:13:1] + 13 | ,-> .class-3 { + 14 | | --foo: !; + 15 | | --foo: bar; + 16 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:13:1] + 13 | ,-> .class-3 { + 14 | | --foo: !; + 15 | | --foo: bar; + 16 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:13:1] + 13 | .class-3 { + : ^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:13:1] + 13 | .class-3 { + : ^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:13:1] + 13 | .class-3 { + : ^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:13:1] + 13 | .class-3 { + : ^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:13:1] + 13 | .class-3 { + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:13:1] + 13 | .class-3 { + : ^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:13:1] + 13 | ,-> .class-3 { + 14 | | --foo: !; + 15 | | --foo: bar; + 16 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:14:5] + 14 | --foo: !; + : ^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:14:5] + 14 | --foo: !; + : ^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:14:5] + 14 | --foo: !; + : ^^^^^^^^^ + `---- + + x Ident { value: Atom('--foo' type=inline), raw: Atom('--foo' type=inline) } + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:14:5] + 14 | --foo: !; + : ^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:14:5] + 14 | --foo: !; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:14:5] + 14 | --foo: !; + : ^ + `---- + + x Delim { value: '!' } + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:14:5] + 14 | --foo: !; + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:14:5] + 14 | --foo: !; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:15:5] + 15 | --foo: bar; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:15:5] + 15 | --foo: bar; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:15:5] + 15 | --foo: bar; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:15:5] + 15 | --foo: bar; + : ^^^^^ + `---- + + x DashedIdent + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:15:5] + 15 | --foo: bar; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:15:5] + 15 | --foo: bar; + : ^^^ + `---- + + x Ident { value: Atom('bar' type=inline), raw: Atom('bar' type=inline) } + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:15:5] + 15 | --foo: bar; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:18:1] + 18 | ,-> .class-4 { + 19 | | --foo: bar; + 20 | | --foo: !; + 21 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:18:1] + 18 | ,-> .class-4 { + 19 | | --foo: bar; + 20 | | --foo: !; + 21 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:18:1] + 18 | .class-4 { + : ^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:18:1] + 18 | .class-4 { + : ^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:18:1] + 18 | .class-4 { + : ^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:18:1] + 18 | .class-4 { + : ^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:18:1] + 18 | .class-4 { + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:18:1] + 18 | .class-4 { + : ^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:18:1] + 18 | ,-> .class-4 { + 19 | | --foo: bar; + 20 | | --foo: !; + 21 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:19:5] + 19 | --foo: bar; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:19:5] + 19 | --foo: bar; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:19:5] + 19 | --foo: bar; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:19:5] + 19 | --foo: bar; + : ^^^^^ + `---- + + x DashedIdent + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:19:5] + 19 | --foo: bar; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:19:5] + 19 | --foo: bar; + : ^^^ + `---- + + x Ident { value: Atom('bar' type=inline), raw: Atom('bar' type=inline) } + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:19:5] + 19 | --foo: bar; + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:20:5] + 20 | --foo: !; + : ^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:20:5] + 20 | --foo: !; + : ^^^^^^^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:20:5] + 20 | --foo: !; + : ^^^^^^^^^ + `---- + + x Ident { value: Atom('--foo' type=inline), raw: Atom('--foo' type=inline) } + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:20:5] + 20 | --foo: !; + : ^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:20:5] + 20 | --foo: !; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:20:5] + 20 | --foo: !; + : ^ + `---- + + x Delim { value: '!' } + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:20:5] + 20 | --foo: !; + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/value/custom-properties/exclamation/input.css:20:5] + 20 | --foo: !; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/hash/eof/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/hash/eof/span.rust-debug new file mode 100644 index 00000000000..54ba7d97073 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/value/hash/eof/span.rust-debug @@ -0,0 +1,108 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/value/hash/eof/input.css:1:1] + 1 | ,-> a { + 2 | `-> prop: # + `---- + + x Rule + ,-[$DIR/tests/recovery/value/hash/eof/input.css:1:1] + 1 | ,-> a { + 2 | `-> prop: # + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/hash/eof/input.css:1:1] + 1 | ,-> a { + 2 | `-> prop: # + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/hash/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/hash/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/hash/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/value/hash/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/value/hash/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/value/hash/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/hash/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/hash/eof/input.css:1:1] + 1 | ,-> a { + 2 | `-> prop: # + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/hash/eof/input.css:2:5] + 2 | prop: # + : ^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/hash/eof/input.css:2:5] + 2 | prop: # + : ^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/hash/eof/input.css:2:5] + 2 | prop: # + : ^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/hash/eof/input.css:2:5] + 2 | prop: # + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/hash/eof/input.css:2:5] + 2 | prop: # + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/hash/eof/input.css:2:5] + 2 | prop: # + : ^ + `---- + + x Delim { value: '#' } + ,-[$DIR/tests/recovery/value/hash/eof/input.css:2:5] + 2 | prop: # + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/number/dot/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/number/dot/span.rust-debug index 5024c5786d4..6fd01877342 100644 --- a/crates/swc_css_parser/tests/recovery/value/number/dot/span.rust-debug +++ b/crates/swc_css_parser/tests/recovery/value/number/dot/span.rust-debug @@ -1,90 +1,120 @@ -error: Stylesheet - --> $DIR/tests/fixture/esbuild/misc/thvW-_S_FCA5eKxKgRyxig/input.css:1:1 - | -1 | a { width: 0.; } - | ^^^^^^^^^^^^^^^^ -error: Rule - --> $DIR/tests/fixture/esbuild/misc/thvW-_S_FCA5eKxKgRyxig/input.css:1:1 - | -1 | a { width: 0.; } - | ^^^^^^^^^^^^^^^^ + x Stylesheet + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^^^^^^^^^^^^^^^^ + `---- -error: StyleRule - --> $DIR/tests/fixture/esbuild/misc/thvW-_S_FCA5eKxKgRyxig/input.css:1:1 - | -1 | a { width: 0.; } - | ^^^^^^^^^^^^^^^^ + x Rule + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^^^^^^^^^^^^^^^^ + `---- -error: ComplexSelector - --> $DIR/tests/fixture/esbuild/misc/thvW-_S_FCA5eKxKgRyxig/input.css:1:1 - | -1 | a { width: 0.; } - | ^ + x QualifiedRule + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^^^^^^^^^^^^^^^^ + `---- -error: CompoundSelector - --> $DIR/tests/fixture/esbuild/misc/thvW-_S_FCA5eKxKgRyxig/input.css:1:1 - | -1 | a { width: 0.; } - | ^ + x SelectorList + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^ + `---- -error: NamespacedName - --> $DIR/tests/fixture/esbuild/misc/thvW-_S_FCA5eKxKgRyxig/input.css:1:1 - | -1 | a { width: 0.; } - | ^ + x ComplexSelector + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^ + `---- -error: Text - --> $DIR/tests/fixture/esbuild/misc/thvW-_S_FCA5eKxKgRyxig/input.css:1:1 - | -1 | a { width: 0.; } - | ^ + x CompoundSelector + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^ + `---- -error: DeclBlock - --> $DIR/tests/fixture/esbuild/misc/thvW-_S_FCA5eKxKgRyxig/input.css:1:3 - | -1 | a { width: 0.; } - | ^^^^^^^^^^^^^^ + x TypeSelector + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^ + `---- -error: Property - --> $DIR/tests/fixture/esbuild/misc/thvW-_S_FCA5eKxKgRyxig/input.css:1:5 - | -1 | a { width: 0.; } - | ^^^^^^^^ + x TagNameSelector + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^ + `---- -error: Text - --> $DIR/tests/fixture/esbuild/misc/thvW-_S_FCA5eKxKgRyxig/input.css:1:5 - | -1 | a { width: 0.; } - | ^^^^^ + x WqName + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^ + `---- -error: Value - --> $DIR/tests/fixture/esbuild/misc/thvW-_S_FCA5eKxKgRyxig/input.css:1:11 - | -1 | a { width: 0.; } - | ^^^ + x Ident + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^ + `---- -error: Tokens - --> $DIR/tests/fixture/esbuild/misc/thvW-_S_FCA5eKxKgRyxig/input.css:1:11 - | -1 | a { width: 0.; } - | ^^^ + x SimpleBlock + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^^^^^^^^^^^^^^ + `---- -error: WhiteSpace - --> $DIR/tests/fixture/esbuild/misc/thvW-_S_FCA5eKxKgRyxig/input.css:1:11 - | -1 | a { width: 0.; } - | ^ + x ComponentValue + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^^^^^^^^^ + `---- -error: Num(NumToken { value: 0.0 }) - --> $DIR/tests/fixture/esbuild/misc/thvW-_S_FCA5eKxKgRyxig/input.css:1:12 - | -1 | a { width: 0.; } - | ^ + x StyleBlock + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^^^^^^^^^ + `---- -error: Delim { value: '.' } - --> $DIR/tests/fixture/esbuild/misc/thvW-_S_FCA5eKxKgRyxig/input.css:1:13 - | -1 | a { width: 0.; } - | ^ + x Declaration + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^^^^^^^^^ + `---- + x DeclarationName + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/value/number/dot/input.css:1:1] + 1 | a { width: 0.; } + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/number/eof/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/number/eof/span.rust-debug new file mode 100644 index 00000000000..61aec2d9a91 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/value/number/eof/span.rust-debug @@ -0,0 +1,108 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/value/number/eof/input.css:1:1] + 1 | ,-> a { + 2 | `-> prop: 12 + `---- + + x Rule + ,-[$DIR/tests/recovery/value/number/eof/input.css:1:1] + 1 | ,-> a { + 2 | `-> prop: 12 + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/number/eof/input.css:1:1] + 1 | ,-> a { + 2 | `-> prop: 12 + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/number/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/number/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/number/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/value/number/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/value/number/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/value/number/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/number/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/number/eof/input.css:1:1] + 1 | ,-> a { + 2 | `-> prop: 12 + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/number/eof/input.css:2:3] + 2 | prop: 12 + : ^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/number/eof/input.css:2:3] + 2 | prop: 12 + : ^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/number/eof/input.css:2:3] + 2 | prop: 12 + : ^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/number/eof/input.css:2:3] + 2 | prop: 12 + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/number/eof/input.css:2:3] + 2 | prop: 12 + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/number/eof/input.css:2:3] + 2 | prop: 12 + : ^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/value/number/eof/input.css:2:3] + 2 | prop: 12 + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/number/minus-dot/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/number/minus-dot/span.rust-debug index 4575437f154..e933efddb50 100644 --- a/crates/swc_css_parser/tests/recovery/value/number/minus-dot/span.rust-debug +++ b/crates/swc_css_parser/tests/recovery/value/number/minus-dot/span.rust-debug @@ -1,90 +1,120 @@ -error: Stylesheet - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:1 - | -1 | a { width: +0.; } - | ^^^^^^^^^^^^^^^^^ -error: Rule - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:1 - | -1 | a { width: +0.; } - | ^^^^^^^^^^^^^^^^^ + x Stylesheet + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^^^^^^^^^^^^^^^^^ + `---- -error: StyleRule - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:1 - | -1 | a { width: +0.; } - | ^^^^^^^^^^^^^^^^^ + x Rule + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^^^^^^^^^^^^^^^^^ + `---- -error: ComplexSelector - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:1 - | -1 | a { width: +0.; } - | ^ + x QualifiedRule + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^^^^^^^^^^^^^^^^^ + `---- -error: CompoundSelector - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:1 - | -1 | a { width: +0.; } - | ^ + x SelectorList + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^ + `---- -error: NamespacedName - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:1 - | -1 | a { width: +0.; } - | ^ + x ComplexSelector + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^ + `---- -error: Text - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:1 - | -1 | a { width: +0.; } - | ^ + x CompoundSelector + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^ + `---- -error: DeclBlock - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:3 - | -1 | a { width: +0.; } - | ^^^^^^^^^^^^^^^ + x TypeSelector + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^ + `---- -error: Property - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:5 - | -1 | a { width: +0.; } - | ^^^^^^^^^ + x TagNameSelector + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^ + `---- -error: Text - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:5 - | -1 | a { width: +0.; } - | ^^^^^ + x WqName + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^ + `---- -error: Value - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:11 - | -1 | a { width: +0.; } - | ^^^^ + x Ident + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^ + `---- -error: Tokens - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:11 - | -1 | a { width: +0.; } - | ^^^^ + x SimpleBlock + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^^^^^^^^^^^^^^^ + `---- -error: WhiteSpace - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:11 - | -1 | a { width: +0.; } - | ^ + x ComponentValue + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^^^^^^^^^^ + `---- -error: Num(NumToken { value: 0.0 }) - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:12 - | -1 | a { width: +0.; } - | ^^ + x StyleBlock + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^^^^^^^^^^ + `---- -error: Delim { value: '.' } - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:14 - | -1 | a { width: +0.; } - | ^ + x Declaration + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^^^^^^^^^^ + `---- + x DeclarationName + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/value/number/minus-dot/input.css:1:1] + 1 | a { width: -0.; } + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/number/plus-dot/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/number/plus-dot/span.rust-debug index 4575437f154..592bcf00692 100644 --- a/crates/swc_css_parser/tests/recovery/value/number/plus-dot/span.rust-debug +++ b/crates/swc_css_parser/tests/recovery/value/number/plus-dot/span.rust-debug @@ -1,90 +1,120 @@ -error: Stylesheet - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:1 - | -1 | a { width: +0.; } - | ^^^^^^^^^^^^^^^^^ -error: Rule - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:1 - | -1 | a { width: +0.; } - | ^^^^^^^^^^^^^^^^^ + x Stylesheet + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^^^^^^^^^^^^^^^^^ + `---- -error: StyleRule - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:1 - | -1 | a { width: +0.; } - | ^^^^^^^^^^^^^^^^^ + x Rule + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^^^^^^^^^^^^^^^^^ + `---- -error: ComplexSelector - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:1 - | -1 | a { width: +0.; } - | ^ + x QualifiedRule + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^^^^^^^^^^^^^^^^^ + `---- -error: CompoundSelector - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:1 - | -1 | a { width: +0.; } - | ^ + x SelectorList + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^ + `---- -error: NamespacedName - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:1 - | -1 | a { width: +0.; } - | ^ + x ComplexSelector + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^ + `---- -error: Text - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:1 - | -1 | a { width: +0.; } - | ^ + x CompoundSelector + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^ + `---- -error: DeclBlock - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:3 - | -1 | a { width: +0.; } - | ^^^^^^^^^^^^^^^ + x TypeSelector + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^ + `---- -error: Property - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:5 - | -1 | a { width: +0.; } - | ^^^^^^^^^ + x TagNameSelector + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^ + `---- -error: Text - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:5 - | -1 | a { width: +0.; } - | ^^^^^ + x WqName + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^ + `---- -error: Value - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:11 - | -1 | a { width: +0.; } - | ^^^^ + x Ident + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^ + `---- -error: Tokens - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:11 - | -1 | a { width: +0.; } - | ^^^^ + x SimpleBlock + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^^^^^^^^^^^^^^^ + `---- -error: WhiteSpace - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:11 - | -1 | a { width: +0.; } - | ^ + x ComponentValue + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^^^^^^^^^^ + `---- -error: Num(NumToken { value: 0.0 }) - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:12 - | -1 | a { width: +0.; } - | ^^ + x StyleBlock + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^^^^^^^^^^ + `---- -error: Delim { value: '.' } - --> $DIR/tests/fixture/esbuild/misc/6mrV_7sMC078PDku0AmwVw/input.css:1:14 - | -1 | a { width: +0.; } - | ^ + x Declaration + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^^^^^^^^^^ + `---- + x DeclarationName + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/value/number/plus-dot/input.css:1:1] + 1 | a { width: +0.; } + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/percentage/dot/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/percentage/dot/span.rust-debug index 310f26ef19e..da498b1551d 100644 --- a/crates/swc_css_parser/tests/recovery/value/percentage/dot/span.rust-debug +++ b/crates/swc_css_parser/tests/recovery/value/percentage/dot/span.rust-debug @@ -1,96 +1,132 @@ -error: Stylesheet - --> $DIR/tests/fixture/esbuild/misc/Wxf4N3jnpCG5lQzkYt7wog/input.css:1:1 - | -1 | a { width: 0.%; } - | ^^^^^^^^^^^^^^^^^ -error: Rule - --> $DIR/tests/fixture/esbuild/misc/Wxf4N3jnpCG5lQzkYt7wog/input.css:1:1 - | -1 | a { width: 0.%; } - | ^^^^^^^^^^^^^^^^^ + x Stylesheet + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^^^^^^^^^^^^^^^^^ + `---- -error: StyleRule - --> $DIR/tests/fixture/esbuild/misc/Wxf4N3jnpCG5lQzkYt7wog/input.css:1:1 - | -1 | a { width: 0.%; } - | ^^^^^^^^^^^^^^^^^ + x Rule + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^^^^^^^^^^^^^^^^^ + `---- -error: ComplexSelector - --> $DIR/tests/fixture/esbuild/misc/Wxf4N3jnpCG5lQzkYt7wog/input.css:1:1 - | -1 | a { width: 0.%; } - | ^ + x QualifiedRule + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^^^^^^^^^^^^^^^^^ + `---- -error: CompoundSelector - --> $DIR/tests/fixture/esbuild/misc/Wxf4N3jnpCG5lQzkYt7wog/input.css:1:1 - | -1 | a { width: 0.%; } - | ^ + x SelectorList + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^ + `---- -error: NamespacedName - --> $DIR/tests/fixture/esbuild/misc/Wxf4N3jnpCG5lQzkYt7wog/input.css:1:1 - | -1 | a { width: 0.%; } - | ^ + x ComplexSelector + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^ + `---- -error: Text - --> $DIR/tests/fixture/esbuild/misc/Wxf4N3jnpCG5lQzkYt7wog/input.css:1:1 - | -1 | a { width: 0.%; } - | ^ + x CompoundSelector + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^ + `---- -error: DeclBlock - --> $DIR/tests/fixture/esbuild/misc/Wxf4N3jnpCG5lQzkYt7wog/input.css:1:3 - | -1 | a { width: 0.%; } - | ^^^^^^^^^^^^^^^ + x TypeSelector + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^ + `---- -error: Property - --> $DIR/tests/fixture/esbuild/misc/Wxf4N3jnpCG5lQzkYt7wog/input.css:1:5 - | -1 | a { width: 0.%; } - | ^^^^^^^^ + x TagNameSelector + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^ + `---- -error: Text - --> $DIR/tests/fixture/esbuild/misc/Wxf4N3jnpCG5lQzkYt7wog/input.css:1:5 - | -1 | a { width: 0.%; } - | ^^^^^ + x WqName + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^ + `---- -error: Value - --> $DIR/tests/fixture/esbuild/misc/Wxf4N3jnpCG5lQzkYt7wog/input.css:1:11 - | -1 | a { width: 0.%; } - | ^^^^ + x Ident + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^ + `---- -error: Tokens - --> $DIR/tests/fixture/esbuild/misc/Wxf4N3jnpCG5lQzkYt7wog/input.css:1:11 - | -1 | a { width: 0.%; } - | ^^^^ + x SimpleBlock + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^^^^^^^^^^^^^^^ + `---- -error: WhiteSpace - --> $DIR/tests/fixture/esbuild/misc/Wxf4N3jnpCG5lQzkYt7wog/input.css:1:11 - | -1 | a { width: 0.%; } - | ^ + x ComponentValue + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^^^^^^^^^^ + `---- -error: Num(NumToken { value: 0.0 }) - --> $DIR/tests/fixture/esbuild/misc/Wxf4N3jnpCG5lQzkYt7wog/input.css:1:12 - | -1 | a { width: 0.%; } - | ^ + x StyleBlock + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^^^^^^^^^^ + `---- -error: Delim { value: '.' } - --> $DIR/tests/fixture/esbuild/misc/Wxf4N3jnpCG5lQzkYt7wog/input.css:1:13 - | -1 | a { width: 0.%; } - | ^ + x Declaration + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^^^^^^^^^^ + `---- -error: Delim { value: '%' } - --> $DIR/tests/fixture/esbuild/misc/Wxf4N3jnpCG5lQzkYt7wog/input.css:1:14 - | -1 | a { width: 0.%; } - | ^ + x DeclarationName + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^^^^^ + `---- + x Ident + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^ + `---- + + x Delim { value: '%' } + ,-[$DIR/tests/recovery/value/percentage/dot/input.css:1:1] + 1 | a { width: 0.%; } + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/percentage/minus/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/percentage/minus/span.rust-debug index ab0ca186ce6..2e9d4d95ec7 100644 --- a/crates/swc_css_parser/tests/recovery/value/percentage/minus/span.rust-debug +++ b/crates/swc_css_parser/tests/recovery/value/percentage/minus/span.rust-debug @@ -1,96 +1,132 @@ -error: Stylesheet - --> $DIR/tests/fixture/esbuild/misc/2Z7MIIhOQ0mreKqEgkeZYQ/input.css:1:1 - | -1 | a { width: -0.%; } - | ^^^^^^^^^^^^^^^^^^ -error: Rule - --> $DIR/tests/fixture/esbuild/misc/2Z7MIIhOQ0mreKqEgkeZYQ/input.css:1:1 - | -1 | a { width: -0.%; } - | ^^^^^^^^^^^^^^^^^^ + x Stylesheet + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^^^^^^^^^^^^^^^^^^ + `---- -error: StyleRule - --> $DIR/tests/fixture/esbuild/misc/2Z7MIIhOQ0mreKqEgkeZYQ/input.css:1:1 - | -1 | a { width: -0.%; } - | ^^^^^^^^^^^^^^^^^^ + x Rule + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^^^^^^^^^^^^^^^^^^ + `---- -error: ComplexSelector - --> $DIR/tests/fixture/esbuild/misc/2Z7MIIhOQ0mreKqEgkeZYQ/input.css:1:1 - | -1 | a { width: -0.%; } - | ^ + x QualifiedRule + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^^^^^^^^^^^^^^^^^^ + `---- -error: CompoundSelector - --> $DIR/tests/fixture/esbuild/misc/2Z7MIIhOQ0mreKqEgkeZYQ/input.css:1:1 - | -1 | a { width: -0.%; } - | ^ + x SelectorList + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^ + `---- -error: NamespacedName - --> $DIR/tests/fixture/esbuild/misc/2Z7MIIhOQ0mreKqEgkeZYQ/input.css:1:1 - | -1 | a { width: -0.%; } - | ^ + x ComplexSelector + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^ + `---- -error: Text - --> $DIR/tests/fixture/esbuild/misc/2Z7MIIhOQ0mreKqEgkeZYQ/input.css:1:1 - | -1 | a { width: -0.%; } - | ^ + x CompoundSelector + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^ + `---- -error: DeclBlock - --> $DIR/tests/fixture/esbuild/misc/2Z7MIIhOQ0mreKqEgkeZYQ/input.css:1:3 - | -1 | a { width: -0.%; } - | ^^^^^^^^^^^^^^^^ + x TypeSelector + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^ + `---- -error: Property - --> $DIR/tests/fixture/esbuild/misc/2Z7MIIhOQ0mreKqEgkeZYQ/input.css:1:5 - | -1 | a { width: -0.%; } - | ^^^^^^^^^ + x TagNameSelector + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^ + `---- -error: Text - --> $DIR/tests/fixture/esbuild/misc/2Z7MIIhOQ0mreKqEgkeZYQ/input.css:1:5 - | -1 | a { width: -0.%; } - | ^^^^^ + x WqName + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^ + `---- -error: Value - --> $DIR/tests/fixture/esbuild/misc/2Z7MIIhOQ0mreKqEgkeZYQ/input.css:1:11 - | -1 | a { width: -0.%; } - | ^^^^^ + x Ident + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^ + `---- -error: Tokens - --> $DIR/tests/fixture/esbuild/misc/2Z7MIIhOQ0mreKqEgkeZYQ/input.css:1:11 - | -1 | a { width: -0.%; } - | ^^^^^ + x SimpleBlock + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^^^^^^^^^^^^^^^^ + `---- -error: WhiteSpace - --> $DIR/tests/fixture/esbuild/misc/2Z7MIIhOQ0mreKqEgkeZYQ/input.css:1:11 - | -1 | a { width: -0.%; } - | ^ + x ComponentValue + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^^^^^^^^^^^ + `---- -error: Num(NumToken { value: -0.0 }) - --> $DIR/tests/fixture/esbuild/misc/2Z7MIIhOQ0mreKqEgkeZYQ/input.css:1:12 - | -1 | a { width: -0.%; } - | ^^ + x StyleBlock + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^^^^^^^^^^^ + `---- -error: Delim { value: '.' } - --> $DIR/tests/fixture/esbuild/misc/2Z7MIIhOQ0mreKqEgkeZYQ/input.css:1:14 - | -1 | a { width: -0.%; } - | ^ + x Declaration + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^^^^^^^^^^^ + `---- -error: Delim { value: '%' } - --> $DIR/tests/fixture/esbuild/misc/2Z7MIIhOQ0mreKqEgkeZYQ/input.css:1:15 - | -1 | a { width: -0.%; } - | ^ + x DeclarationName + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^^^^^ + `---- + x Ident + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^ + `---- + + x Delim { value: '%' } + ,-[$DIR/tests/recovery/value/percentage/minus/input.css:1:1] + 1 | a { width: -0.%; } + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/percentage/plus/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/percentage/plus/span.rust-debug index dfd16206746..3641bdeb14d 100644 --- a/crates/swc_css_parser/tests/recovery/value/percentage/plus/span.rust-debug +++ b/crates/swc_css_parser/tests/recovery/value/percentage/plus/span.rust-debug @@ -1,96 +1,132 @@ -error: Stylesheet - --> $DIR/tests/fixture/esbuild/misc/iY6z2A7vaO8bBm_U1Qrm8g/input.css:1:1 - | -1 | a { width: +0.%; } - | ^^^^^^^^^^^^^^^^^^ -error: Rule - --> $DIR/tests/fixture/esbuild/misc/iY6z2A7vaO8bBm_U1Qrm8g/input.css:1:1 - | -1 | a { width: +0.%; } - | ^^^^^^^^^^^^^^^^^^ + x Stylesheet + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^^^^^^^^^^^^^^^^^^ + `---- -error: StyleRule - --> $DIR/tests/fixture/esbuild/misc/iY6z2A7vaO8bBm_U1Qrm8g/input.css:1:1 - | -1 | a { width: +0.%; } - | ^^^^^^^^^^^^^^^^^^ + x Rule + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^^^^^^^^^^^^^^^^^^ + `---- -error: ComplexSelector - --> $DIR/tests/fixture/esbuild/misc/iY6z2A7vaO8bBm_U1Qrm8g/input.css:1:1 - | -1 | a { width: +0.%; } - | ^ + x QualifiedRule + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^^^^^^^^^^^^^^^^^^ + `---- -error: CompoundSelector - --> $DIR/tests/fixture/esbuild/misc/iY6z2A7vaO8bBm_U1Qrm8g/input.css:1:1 - | -1 | a { width: +0.%; } - | ^ + x SelectorList + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^ + `---- -error: NamespacedName - --> $DIR/tests/fixture/esbuild/misc/iY6z2A7vaO8bBm_U1Qrm8g/input.css:1:1 - | -1 | a { width: +0.%; } - | ^ + x ComplexSelector + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^ + `---- -error: Text - --> $DIR/tests/fixture/esbuild/misc/iY6z2A7vaO8bBm_U1Qrm8g/input.css:1:1 - | -1 | a { width: +0.%; } - | ^ + x CompoundSelector + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^ + `---- -error: DeclBlock - --> $DIR/tests/fixture/esbuild/misc/iY6z2A7vaO8bBm_U1Qrm8g/input.css:1:3 - | -1 | a { width: +0.%; } - | ^^^^^^^^^^^^^^^^ + x TypeSelector + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^ + `---- -error: Property - --> $DIR/tests/fixture/esbuild/misc/iY6z2A7vaO8bBm_U1Qrm8g/input.css:1:5 - | -1 | a { width: +0.%; } - | ^^^^^^^^^ + x TagNameSelector + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^ + `---- -error: Text - --> $DIR/tests/fixture/esbuild/misc/iY6z2A7vaO8bBm_U1Qrm8g/input.css:1:5 - | -1 | a { width: +0.%; } - | ^^^^^ + x WqName + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^ + `---- -error: Value - --> $DIR/tests/fixture/esbuild/misc/iY6z2A7vaO8bBm_U1Qrm8g/input.css:1:11 - | -1 | a { width: +0.%; } - | ^^^^^ + x Ident + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^ + `---- -error: Tokens - --> $DIR/tests/fixture/esbuild/misc/iY6z2A7vaO8bBm_U1Qrm8g/input.css:1:11 - | -1 | a { width: +0.%; } - | ^^^^^ + x SimpleBlock + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^^^^^^^^^^^^^^^^ + `---- -error: WhiteSpace - --> $DIR/tests/fixture/esbuild/misc/iY6z2A7vaO8bBm_U1Qrm8g/input.css:1:11 - | -1 | a { width: +0.%; } - | ^ + x ComponentValue + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^^^^^^^^^^^ + `---- -error: Num(NumToken { value: 0.0 }) - --> $DIR/tests/fixture/esbuild/misc/iY6z2A7vaO8bBm_U1Qrm8g/input.css:1:12 - | -1 | a { width: +0.%; } - | ^^ + x StyleBlock + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^^^^^^^^^^^ + `---- -error: Delim { value: '.' } - --> $DIR/tests/fixture/esbuild/misc/iY6z2A7vaO8bBm_U1Qrm8g/input.css:1:14 - | -1 | a { width: +0.%; } - | ^ + x Declaration + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^^^^^^^^^^^ + `---- -error: Delim { value: '%' } - --> $DIR/tests/fixture/esbuild/misc/iY6z2A7vaO8bBm_U1Qrm8g/input.css:1:15 - | -1 | a { width: +0.%; } - | ^ + x DeclarationName + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^^^^^ + `---- + x Ident + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^^ + `---- + + x Integer + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^ + `---- + + x Delim { value: '%' } + ,-[$DIR/tests/recovery/value/percentage/plus/input.css:1:1] + 1 | a { width: +0.%; } + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/quotes/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/quotes/span.rust-debug new file mode 100644 index 00000000000..fb2387aad22 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/value/quotes/span.rust-debug @@ -0,0 +1,158 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/value/quotes/input.css:1:1] + 1 | ,-> p::before { + 2 | | content: "tes + 3 | | t"; + 4 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/value/quotes/input.css:1:1] + 1 | ,-> p::before { + 2 | | content: "tes + 3 | | t"; + 4 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/quotes/input.css:1:1] + 1 | ,-> p::before { + 2 | | content: "tes + 3 | | t"; + 4 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/quotes/input.css:1:1] + 1 | p::before { + : ^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/quotes/input.css:1:1] + 1 | p::before { + : ^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/quotes/input.css:1:1] + 1 | p::before { + : ^^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/value/quotes/input.css:1:1] + 1 | p::before { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/value/quotes/input.css:1:1] + 1 | p::before { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/value/quotes/input.css:1:1] + 1 | p::before { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/quotes/input.css:1:1] + 1 | p::before { + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/value/quotes/input.css:1:1] + 1 | p::before { + : ^^^^^^^^ + `---- + + x PseudoElementSelector + ,-[$DIR/tests/recovery/value/quotes/input.css:1:1] + 1 | p::before { + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/quotes/input.css:1:1] + 1 | p::before { + : ^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/quotes/input.css:1:1] + 1 | ,-> p::before { + 2 | | content: "tes + 3 | | t"; + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/quotes/input.css:2:5] + 2 | ,-> content: "tes + 3 | `-> t"; + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/quotes/input.css:2:5] + 2 | ,-> content: "tes + 3 | `-> t"; + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/quotes/input.css:2:5] + 2 | ,-> content: "tes + 3 | `-> t"; + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/quotes/input.css:2:5] + 2 | content: "tes + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/quotes/input.css:2:5] + 2 | content: "tes + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/quotes/input.css:2:5] + 2 | content: "tes + : ^^^^ + `---- + + x BadString { value: Atom('tes' type=inline), raw: Atom('"tes' type=inline) } + ,-[$DIR/tests/recovery/value/quotes/input.css:2:5] + 2 | content: "tes + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/quotes/input.css:3:5] + 3 | t"; + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/quotes/input.css:3:5] + 3 | t"; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/quotes/input.css:3:5] + 3 | t"; + : ^^ + `---- + + x BadString { value: Atom(';' type=inline), raw: Atom('";' type=inline) } + ,-[$DIR/tests/recovery/value/quotes/input.css:3:5] + 3 | t"; + : ^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/string/eof-double-quotes/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/string/eof-double-quotes/span.rust-debug new file mode 100644 index 00000000000..78fe7ab7005 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/value/string/eof-double-quotes/span.rust-debug @@ -0,0 +1,108 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:1:1] + 1 | ,-> div { + 2 | `-> prop: "string + `---- + + x Rule + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:1:1] + 1 | ,-> div { + 2 | `-> prop: "string + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:1:1] + 1 | ,-> div { + 2 | `-> prop: "string + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:1:1] + 1 | ,-> div { + 2 | `-> prop: "string + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:2:3] + 2 | prop: "string + : ^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:2:3] + 2 | prop: "string + : ^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:2:3] + 2 | prop: "string + : ^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:2:3] + 2 | prop: "string + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:2:3] + 2 | prop: "string + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:2:3] + 2 | prop: "string + : ^^^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/value/string/eof-double-quotes/input.css:2:3] + 2 | prop: "string + : ^^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/string/eof-single-quotes/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/string/eof-single-quotes/span.rust-debug new file mode 100644 index 00000000000..ee272f75177 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/value/string/eof-single-quotes/span.rust-debug @@ -0,0 +1,108 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:1:1] + 1 | ,-> div { + 2 | `-> prop: 'string + `---- + + x Rule + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:1:1] + 1 | ,-> div { + 2 | `-> prop: 'string + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:1:1] + 1 | ,-> div { + 2 | `-> prop: 'string + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:1:1] + 1 | ,-> div { + 2 | `-> prop: 'string + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:2:3] + 2 | prop: 'string + : ^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:2:3] + 2 | prop: 'string + : ^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:2:3] + 2 | prop: 'string + : ^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:2:3] + 2 | prop: 'string + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:2:3] + 2 | prop: 'string + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:2:3] + 2 | prop: 'string + : ^^^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/value/string/eof-single-quotes/input.css:2:3] + 2 | prop: 'string + : ^^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/string/escaped/broken-1/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/string/escaped/broken-1/span.rust-debug new file mode 100644 index 00000000000..77674720ca3 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/value/string/escaped/broken-1/span.rust-debug @@ -0,0 +1,112 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:1:1] + 1 | ,-> a { + 2 | | prop: "\a + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:1:1] + 1 | ,-> a { + 2 | | prop: "\a + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:1:1] + 1 | ,-> a { + 2 | | prop: "\a + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:1:1] + 1 | ,-> a { + 2 | | prop: "\a + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:2:5] + 2 | ,-> prop: "\a + 3 | `-> } + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:2:5] + 2 | ,-> prop: "\a + 3 | `-> } + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:2:5] + 2 | ,-> prop: "\a + 3 | `-> } + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:2:5] + 2 | prop: "\a + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:2:5] + 2 | prop: "\a + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:2:5] + 2 | ,-> prop: "\a + 3 | `-> } + `---- + + x Str + ,-[$DIR/tests/recovery/value/string/escaped/broken-1/input.css:2:5] + 2 | ,-> prop: "\a + 3 | `-> } + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/string/escaped/broken/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/string/escaped/broken/span.rust-debug new file mode 100644 index 00000000000..5e88b2517ba --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/value/string/escaped/broken/span.rust-debug @@ -0,0 +1,108 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:1:1] + 1 | ,-> a { + 2 | `-> prop: "test\\ + `---- + + x Rule + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:1:1] + 1 | ,-> a { + 2 | `-> prop: "test\\ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:1:1] + 1 | ,-> a { + 2 | `-> prop: "test\\ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:1:1] + 1 | ,-> a { + 2 | `-> prop: "test\\ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:2:5] + 2 | prop: "test\\ + : ^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:2:5] + 2 | prop: "test\\ + : ^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:2:5] + 2 | prop: "test\\ + : ^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:2:5] + 2 | prop: "test\\ + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:2:5] + 2 | prop: "test\\ + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:2:5] + 2 | prop: "test\\ + : ^^^^^^^ + `---- + + x Str + ,-[$DIR/tests/recovery/value/string/escaped/broken/input.css:2:5] + 2 | prop: "test\\ + : ^^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/string/escaped/eof/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/string/escaped/eof/span.rust-debug new file mode 100644 index 00000000000..e6a7287b32b --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/value/string/escaped/eof/span.rust-debug @@ -0,0 +1,108 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:1:1] + 1 | ,-> a { + 2 | `-> color: \ + `---- + + x Rule + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:1:1] + 1 | ,-> a { + 2 | `-> color: \ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:1:1] + 1 | ,-> a { + 2 | `-> color: \ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:1:1] + 1 | ,-> a { + 2 | `-> color: \ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:2:5] + 2 | color: \ + : ^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:2:5] + 2 | color: \ + : ^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:2:5] + 2 | color: \ + : ^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:2:5] + 2 | color: \ + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:2:5] + 2 | color: \ + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:2:5] + 2 | color: \ + : ^ + `---- + + x Delim { value: '\\' } + ,-[$DIR/tests/recovery/value/string/escaped/eof/input.css:2:5] + 2 | color: \ + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/string/newline/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/string/newline/span.rust-debug new file mode 100644 index 00000000000..f2981e84ff4 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/value/string/newline/span.rust-debug @@ -0,0 +1,108 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/value/string/newline/input.css:1:1] + 1 | ,-> a { + 2 | `-> prop: " + `---- + + x Rule + ,-[$DIR/tests/recovery/value/string/newline/input.css:1:1] + 1 | ,-> a { + 2 | `-> prop: " + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/string/newline/input.css:1:1] + 1 | ,-> a { + 2 | `-> prop: " + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/string/newline/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/string/newline/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/string/newline/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/value/string/newline/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/value/string/newline/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/value/string/newline/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/string/newline/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/string/newline/input.css:1:1] + 1 | ,-> a { + 2 | `-> prop: " + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/string/newline/input.css:2:5] + 2 | prop: " + : ^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/string/newline/input.css:2:5] + 2 | prop: " + : ^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/string/newline/input.css:2:5] + 2 | prop: " + : ^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/string/newline/input.css:2:5] + 2 | prop: " + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/string/newline/input.css:2:5] + 2 | prop: " + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/string/newline/input.css:2:5] + 2 | prop: " + : ^ + `---- + + x BadString { value: Atom('' type=static), raw: Atom('"' type=inline) } + ,-[$DIR/tests/recovery/value/string/newline/input.css:2:5] + 2 | prop: " + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/url/basic/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/url/basic/span.rust-debug new file mode 100644 index 00000000000..4d8adef793f --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/value/url/basic/span.rust-debug @@ -0,0 +1,850 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/value/url/basic/input.css:1:1] + 1 | ,-> div { + 2 | | --foo: "http://www.example.com/pinkish.gif"; + 3 | | background: url(var(--foo)); + 4 | | background: url(image.png\999999); + 5 | | background: url(image.png\0); + 6 | | background: url(image.png\D800); + 7 | | background: url(image.png\DFFF); + 8 | | background: url(image.png\11FFFF); + 9 | | color: red; + 10 | | } + 11 | | + 12 | | .foo { + 13 | | background: url(image.png param(var(--url))); + 14 | | } + 15 | | + 16 | | .style { + 17 | | background: url("foo", "bar"); + 18 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/value/url/basic/input.css:1:1] + 1 | ,-> div { + 2 | | --foo: "http://www.example.com/pinkish.gif"; + 3 | | background: url(var(--foo)); + 4 | | background: url(image.png\999999); + 5 | | background: url(image.png\0); + 6 | | background: url(image.png\D800); + 7 | | background: url(image.png\DFFF); + 8 | | background: url(image.png\11FFFF); + 9 | | color: red; + 10 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/url/basic/input.css:1:1] + 1 | ,-> div { + 2 | | --foo: "http://www.example.com/pinkish.gif"; + 3 | | background: url(var(--foo)); + 4 | | background: url(image.png\999999); + 5 | | background: url(image.png\0); + 6 | | background: url(image.png\D800); + 7 | | background: url(image.png\DFFF); + 8 | | background: url(image.png\11FFFF); + 9 | | color: red; + 10 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/url/basic/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/url/basic/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/url/basic/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/value/url/basic/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/value/url/basic/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x WqName + ,-[$DIR/tests/recovery/value/url/basic/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:1:1] + 1 | div { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/url/basic/input.css:1:1] + 1 | ,-> div { + 2 | | --foo: "http://www.example.com/pinkish.gif"; + 3 | | background: url(var(--foo)); + 4 | | background: url(image.png\999999); + 5 | | background: url(image.png\0); + 6 | | background: url(image.png\D800); + 7 | | background: url(image.png\DFFF); + 8 | | background: url(image.png\11FFFF); + 9 | | color: red; + 10 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:2:5] + 2 | --foo: "http://www.example.com/pinkish.gif"; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/url/basic/input.css:2:5] + 2 | --foo: "http://www.example.com/pinkish.gif"; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/url/basic/input.css:2:5] + 2 | --foo: "http://www.example.com/pinkish.gif"; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/url/basic/input.css:2:5] + 2 | --foo: "http://www.example.com/pinkish.gif"; + : ^^^^^ + `---- + + x DashedIdent + ,-[$DIR/tests/recovery/value/url/basic/input.css:2:5] + 2 | --foo: "http://www.example.com/pinkish.gif"; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:2:5] + 2 | --foo: "http://www.example.com/pinkish.gif"; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x String { value: Atom('http://www.example.com/pinkish.gif' type=dynamic), raw: Atom('"http://www.example.com/pinkish.gif"' type=dynamic) } + ,-[$DIR/tests/recovery/value/url/basic/input.css:2:5] + 2 | --foo: "http://www.example.com/pinkish.gif"; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:3:5] + 3 | background: url(var(--foo)); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/url/basic/input.css:3:5] + 3 | background: url(var(--foo)); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/url/basic/input.css:3:5] + 3 | background: url(var(--foo)); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/url/basic/input.css:3:5] + 3 | background: url(var(--foo)); + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:3:5] + 3 | background: url(var(--foo)); + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:3:5] + 3 | background: url(var(--foo)); + : ^^^^^^^^^^^^^^ + `---- + + x BadUrl { name: Atom('url' type=static), raw_name: Atom('url' type=static), value: Atom('var(--foo' type=dynamic), raw_value: Atom('var(--foo' type=dynamic) } + ,-[$DIR/tests/recovery/value/url/basic/input.css:3:5] + 3 | background: url(var(--foo)); + : ^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:3:5] + 3 | background: url(var(--foo)); + : ^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/url/basic/input.css:3:5] + 3 | background: url(var(--foo)); + : ^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/value/url/basic/input.css:3:5] + 3 | background: url(var(--foo)); + : ^^ + `---- + + x RParen + ,-[$DIR/tests/recovery/value/url/basic/input.css:3:5] + 3 | background: url(var(--foo)); + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/value/url/basic/input.css:3:5] + 3 | background: url(var(--foo)); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:4:5] + 4 | background: url(image.png\999999); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/url/basic/input.css:4:5] + 4 | background: url(image.png\999999); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/url/basic/input.css:4:5] + 4 | background: url(image.png\999999); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/url/basic/input.css:4:5] + 4 | background: url(image.png\999999); + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:4:5] + 4 | background: url(image.png\999999); + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:4:5] + 4 | background: url(image.png\999999); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Url + ,-[$DIR/tests/recovery/value/url/basic/input.css:4:5] + 4 | background: url(image.png\999999); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:4:5] + 4 | background: url(image.png\999999); + : ^^^ + `---- + + x UrlValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:4:5] + 4 | background: url(image.png\999999); + : ^^^^^^^^^^^^^^^^ + `---- + + x UrlValueRaw + ,-[$DIR/tests/recovery/value/url/basic/input.css:4:5] + 4 | background: url(image.png\999999); + : ^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:5:5] + 5 | background: url(image.png\0); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/url/basic/input.css:5:5] + 5 | background: url(image.png\0); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/url/basic/input.css:5:5] + 5 | background: url(image.png\0); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/url/basic/input.css:5:5] + 5 | background: url(image.png\0); + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:5:5] + 5 | background: url(image.png\0); + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:5:5] + 5 | background: url(image.png\0); + : ^^^^^^^^^^^^^^^^ + `---- + + x Url + ,-[$DIR/tests/recovery/value/url/basic/input.css:5:5] + 5 | background: url(image.png\0); + : ^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:5:5] + 5 | background: url(image.png\0); + : ^^^ + `---- + + x UrlValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:5:5] + 5 | background: url(image.png\0); + : ^^^^^^^^^^^ + `---- + + x UrlValueRaw + ,-[$DIR/tests/recovery/value/url/basic/input.css:5:5] + 5 | background: url(image.png\0); + : ^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:6:5] + 6 | background: url(image.png\D800); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/url/basic/input.css:6:5] + 6 | background: url(image.png\D800); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/url/basic/input.css:6:5] + 6 | background: url(image.png\D800); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/url/basic/input.css:6:5] + 6 | background: url(image.png\D800); + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:6:5] + 6 | background: url(image.png\D800); + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:6:5] + 6 | background: url(image.png\D800); + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Url + ,-[$DIR/tests/recovery/value/url/basic/input.css:6:5] + 6 | background: url(image.png\D800); + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:6:5] + 6 | background: url(image.png\D800); + : ^^^ + `---- + + x UrlValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:6:5] + 6 | background: url(image.png\D800); + : ^^^^^^^^^^^^^^ + `---- + + x UrlValueRaw + ,-[$DIR/tests/recovery/value/url/basic/input.css:6:5] + 6 | background: url(image.png\D800); + : ^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:7:5] + 7 | background: url(image.png\DFFF); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/url/basic/input.css:7:5] + 7 | background: url(image.png\DFFF); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/url/basic/input.css:7:5] + 7 | background: url(image.png\DFFF); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/url/basic/input.css:7:5] + 7 | background: url(image.png\DFFF); + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:7:5] + 7 | background: url(image.png\DFFF); + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:7:5] + 7 | background: url(image.png\DFFF); + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Url + ,-[$DIR/tests/recovery/value/url/basic/input.css:7:5] + 7 | background: url(image.png\DFFF); + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:7:5] + 7 | background: url(image.png\DFFF); + : ^^^ + `---- + + x UrlValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:7:5] + 7 | background: url(image.png\DFFF); + : ^^^^^^^^^^^^^^ + `---- + + x UrlValueRaw + ,-[$DIR/tests/recovery/value/url/basic/input.css:7:5] + 7 | background: url(image.png\DFFF); + : ^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:8:5] + 8 | background: url(image.png\11FFFF); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/url/basic/input.css:8:5] + 8 | background: url(image.png\11FFFF); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/url/basic/input.css:8:5] + 8 | background: url(image.png\11FFFF); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/url/basic/input.css:8:5] + 8 | background: url(image.png\11FFFF); + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:8:5] + 8 | background: url(image.png\11FFFF); + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:8:5] + 8 | background: url(image.png\11FFFF); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Url + ,-[$DIR/tests/recovery/value/url/basic/input.css:8:5] + 8 | background: url(image.png\11FFFF); + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:8:5] + 8 | background: url(image.png\11FFFF); + : ^^^ + `---- + + x UrlValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:8:5] + 8 | background: url(image.png\11FFFF); + : ^^^^^^^^^^^^^^^^ + `---- + + x UrlValueRaw + ,-[$DIR/tests/recovery/value/url/basic/input.css:8:5] + 8 | background: url(image.png\11FFFF); + : ^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:9:5] + 9 | color: red; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/url/basic/input.css:9:5] + 9 | color: red; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/url/basic/input.css:9:5] + 9 | color: red; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/url/basic/input.css:9:5] + 9 | color: red; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:9:5] + 9 | color: red; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:9:5] + 9 | color: red; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:9:5] + 9 | color: red; + : ^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/value/url/basic/input.css:12:1] + 12 | ,-> .foo { + 13 | | background: url(image.png param(var(--url))); + 14 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/url/basic/input.css:12:1] + 12 | ,-> .foo { + 13 | | background: url(image.png param(var(--url))); + 14 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/url/basic/input.css:12:1] + 12 | .foo { + : ^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/url/basic/input.css:12:1] + 12 | .foo { + : ^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/url/basic/input.css:12:1] + 12 | .foo { + : ^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/value/url/basic/input.css:12:1] + 12 | .foo { + : ^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/value/url/basic/input.css:12:1] + 12 | .foo { + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:12:1] + 12 | .foo { + : ^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/url/basic/input.css:12:1] + 12 | ,-> .foo { + 13 | | background: url(image.png param(var(--url))); + 14 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:13:5] + 13 | background: url(image.png param(var(--url))); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/url/basic/input.css:13:5] + 13 | background: url(image.png param(var(--url))); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/url/basic/input.css:13:5] + 13 | background: url(image.png param(var(--url))); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/url/basic/input.css:13:5] + 13 | background: url(image.png param(var(--url))); + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:13:5] + 13 | background: url(image.png param(var(--url))); + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:13:5] + 13 | background: url(image.png param(var(--url))); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x BadUrl { name: Atom('url' type=static), raw_name: Atom('url' type=static), value: Atom('image.png param(var(--url' type=dynamic), raw_value: Atom('image.png param(var(--url' type=dynamic) } + ,-[$DIR/tests/recovery/value/url/basic/input.css:13:5] + 13 | background: url(image.png param(var(--url))); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:13:5] + 13 | background: url(image.png param(var(--url))); + : ^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/url/basic/input.css:13:5] + 13 | background: url(image.png param(var(--url))); + : ^^^ + `---- + + x Tokens + ,-[$DIR/tests/recovery/value/url/basic/input.css:13:5] + 13 | background: url(image.png param(var(--url))); + : ^^^ + `---- + + x RParen + ,-[$DIR/tests/recovery/value/url/basic/input.css:13:5] + 13 | background: url(image.png param(var(--url))); + : ^ + `---- + + x RParen + ,-[$DIR/tests/recovery/value/url/basic/input.css:13:5] + 13 | background: url(image.png param(var(--url))); + : ^ + `---- + + x Semi + ,-[$DIR/tests/recovery/value/url/basic/input.css:13:5] + 13 | background: url(image.png param(var(--url))); + : ^ + `---- + + x Rule + ,-[$DIR/tests/recovery/value/url/basic/input.css:16:1] + 16 | ,-> .style { + 17 | | background: url("foo", "bar"); + 18 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/url/basic/input.css:16:1] + 16 | ,-> .style { + 17 | | background: url("foo", "bar"); + 18 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/url/basic/input.css:16:1] + 16 | .style { + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/url/basic/input.css:16:1] + 16 | .style { + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/url/basic/input.css:16:1] + 16 | .style { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/value/url/basic/input.css:16:1] + 16 | .style { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/value/url/basic/input.css:16:1] + 16 | .style { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:16:1] + 16 | .style { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/url/basic/input.css:16:1] + 16 | ,-> .style { + 17 | | background: url("foo", "bar"); + 18 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:17:5] + 17 | background: url("foo", "bar"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/url/basic/input.css:17:5] + 17 | background: url("foo", "bar"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/url/basic/input.css:17:5] + 17 | background: url("foo", "bar"); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/url/basic/input.css:17:5] + 17 | background: url("foo", "bar"); + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:17:5] + 17 | background: url("foo", "bar"); + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:17:5] + 17 | background: url("foo", "bar"); + : ^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/value/url/basic/input.css:17:5] + 17 | background: url("foo", "bar"); + : ^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/basic/input.css:17:5] + 17 | background: url("foo", "bar"); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:17:5] + 17 | background: url("foo", "bar"); + : ^^^^^ + `---- + + x String { value: Atom('foo' type=inline), raw: Atom('"foo"' type=inline) } + ,-[$DIR/tests/recovery/value/url/basic/input.css:17:5] + 17 | background: url("foo", "bar"); + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:17:5] + 17 | background: url("foo", "bar"); + : ^ + `---- + + x Comma + ,-[$DIR/tests/recovery/value/url/basic/input.css:17:5] + 17 | background: url("foo", "bar"); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:17:5] + 17 | background: url("foo", "bar"); + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/value/url/basic/input.css:17:5] + 17 | background: url("foo", "bar"); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/basic/input.css:17:5] + 17 | background: url("foo", "bar"); + : ^^^^^ + `---- + + x String { value: Atom('bar' type=inline), raw: Atom('"bar"' type=inline) } + ,-[$DIR/tests/recovery/value/url/basic/input.css:17:5] + 17 | background: url("foo", "bar"); + : ^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/url/eof-whitespaces/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/url/eof-whitespaces/span.rust-debug new file mode 100644 index 00000000000..ea3a4bcb18e --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/value/url/eof-whitespaces/span.rust-debug @@ -0,0 +1,126 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^^^^ + `---- + + x Url + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^ + `---- + + x UrlValue + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^ + `---- + + x UrlValueRaw + ,-[$DIR/tests/recovery/value/url/eof-whitespaces/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/url/eof/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/url/eof/span.rust-debug new file mode 100644 index 00000000000..5c9ad1442cf --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/value/url/eof/span.rust-debug @@ -0,0 +1,126 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^ + `---- + + x Url + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^ + `---- + + x UrlValue + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^ + `---- + + x UrlValueRaw + ,-[$DIR/tests/recovery/value/url/eof/input.css:1:1] + 1 | a { prop: url(foo.png + : ^^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/value/url/parenthesis/span.rust-debug b/crates/swc_css_parser/tests/recovery/value/url/parenthesis/span.rust-debug new file mode 100644 index 00000000000..5e29ce32c1e --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/value/url/parenthesis/span.rust-debug @@ -0,0 +1,114 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:1:1] + 1 | ,-> a { + 2 | | background: url(test\); + 3 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:1:1] + 1 | ,-> a { + 2 | | background: url(test\); + 3 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:1:1] + 1 | ,-> a { + 2 | | background: url(test\); + 3 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:1:1] + 1 | ,-> a { + 2 | | background: url(test\); + 3 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:2:5] + 2 | ,-> background: url(test\); + 3 | `-> } + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:2:5] + 2 | ,-> background: url(test\); + 3 | `-> } + `---- + + x Declaration + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:2:5] + 2 | ,-> background: url(test\); + 3 | `-> } + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:2:5] + 2 | background: url(test\); + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:2:5] + 2 | background: url(test\); + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:2:5] + 2 | ,-> background: url(test\); + 3 | `-> } + `---- + + x BadUrl { name: Atom('url' type=static), raw_name: Atom('url' type=static), value: Atom('test\); + | }' type=dynamic), raw_value: Atom('test\); + | }' type=dynamic) } + ,-[$DIR/tests/recovery/value/url/parenthesis/input.css:2:5] + 2 | ,-> background: url(test\); + 3 | `-> } + `---- diff --git a/crates/swc_css_parser/tests/recovery/vercel/001/span.rust-debug b/crates/swc_css_parser/tests/recovery/vercel/001/span.rust-debug new file mode 100644 index 00000000000..4ff1666fc12 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/vercel/001/span.rust-debug @@ -0,0 +1,806 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | ,-> @media (min-width: 935px) { + 2 | | .video:nth-child(4n) { + 3 | | margin-right: 0; + 4 | | } + 5 | | .video:last-child { + 6 | | margin-right: 0; + 7 | | } + 8 | | .video:first-child, + 9 | | .video:nth-child(5), + 10 | | .video:nth-child(9), + 11 | | .video:nth-child(13) { + 12 | | margin-left: 0; + 13 | | } + 14 | | __styled-jsx-placeholder__7 + 15 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | ,-> @media (min-width: 935px) { + 2 | | .video:nth-child(4n) { + 3 | | margin-right: 0; + 4 | | } + 5 | | .video:last-child { + 6 | | margin-right: 0; + 7 | | } + 8 | | .video:first-child, + 9 | | .video:nth-child(5), + 10 | | .video:nth-child(9), + 11 | | .video:nth-child(13) { + 12 | | margin-left: 0; + 13 | | } + 14 | | __styled-jsx-placeholder__7 + 15 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | ,-> @media (min-width: 935px) { + 2 | | .video:nth-child(4n) { + 3 | | margin-right: 0; + 4 | | } + 5 | | .video:last-child { + 6 | | margin-right: 0; + 7 | | } + 8 | | .video:first-child, + 9 | | .video:nth-child(5), + 10 | | .video:nth-child(9), + 11 | | .video:nth-child(13) { + 12 | | margin-left: 0; + 13 | | } + 14 | | __styled-jsx-placeholder__7 + 15 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | @media (min-width: 935px) { + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | @media (min-width: 935px) { + : ^^^^^ + `---- + + x MediaQueryList + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | @media (min-width: 935px) { + : ^^^^^^^^^^^^^^^^^^ + `---- + + x MediaQuery + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | @media (min-width: 935px) { + : ^^^^^^^^^^^^^^^^^^ + `---- + + x MediaCondition + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | @media (min-width: 935px) { + : ^^^^^^^^^^^^^^^^^^ + `---- + + x MediaConditionAllType + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | @media (min-width: 935px) { + : ^^^^^^^^^^^^^^^^^^ + `---- + + x MediaInParens + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | @media (min-width: 935px) { + : ^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeature + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | @media (min-width: 935px) { + : ^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeaturePlain + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | @media (min-width: 935px) { + : ^^^^^^^^^^^^^^^^^^ + `---- + + x MediaFeatureName + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | @media (min-width: 935px) { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | @media (min-width: 935px) { + : ^^^^^^^^^ + `---- + + x MediaFeatureValue + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | @media (min-width: 935px) { + : ^^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | @media (min-width: 935px) { + : ^^^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | @media (min-width: 935px) { + : ^^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | @media (min-width: 935px) { + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | @media (min-width: 935px) { + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/vercel/001/input.css:1:1] + 1 | ,-> @media (min-width: 935px) { + 2 | | .video:nth-child(4n) { + 3 | | margin-right: 0; + 4 | | } + 5 | | .video:last-child { + 6 | | margin-right: 0; + 7 | | } + 8 | | .video:first-child, + 9 | | .video:nth-child(5), + 10 | | .video:nth-child(9), + 11 | | .video:nth-child(13) { + 12 | | margin-left: 0; + 13 | | } + 14 | | __styled-jsx-placeholder__7 + 15 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/001/input.css:2:5] + 2 | ,-> .video:nth-child(4n) { + 3 | | margin-right: 0; + 4 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/vercel/001/input.css:2:5] + 2 | ,-> .video:nth-child(4n) { + 3 | | margin-right: 0; + 4 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/vercel/001/input.css:2:5] + 2 | ,-> .video:nth-child(4n) { + 3 | | margin-right: 0; + 4 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/vercel/001/input.css:2:5] + 2 | .video:nth-child(4n) { + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:2:5] + 2 | .video:nth-child(4n) { + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:2:5] + 2 | .video:nth-child(4n) { + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:2:5] + 2 | .video:nth-child(4n) { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:2:5] + 2 | .video:nth-child(4n) { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:2:5] + 2 | .video:nth-child(4n) { + : ^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:2:5] + 2 | .video:nth-child(4n) { + : ^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:2:5] + 2 | .video:nth-child(4n) { + : ^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:2:5] + 2 | .video:nth-child(4n) { + : ^^^^^^^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/vercel/001/input.css:2:5] + 2 | .video:nth-child(4n) { + : ^^ + `---- + + x AnPlusB + ,-[$DIR/tests/recovery/vercel/001/input.css:2:5] + 2 | .video:nth-child(4n) { + : ^^ + `---- + + x AnPlusBNotation + ,-[$DIR/tests/recovery/vercel/001/input.css:2:5] + 2 | .video:nth-child(4n) { + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/vercel/001/input.css:2:5] + 2 | ,-> .video:nth-child(4n) { + 3 | | margin-right: 0; + 4 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/001/input.css:3:9] + 3 | margin-right: 0; + : ^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/001/input.css:3:9] + 3 | margin-right: 0; + : ^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/001/input.css:3:9] + 3 | margin-right: 0; + : ^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/001/input.css:3:9] + 3 | margin-right: 0; + : ^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:3:9] + 3 | margin-right: 0; + : ^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/001/input.css:3:9] + 3 | margin-right: 0; + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/vercel/001/input.css:3:9] + 3 | margin-right: 0; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/001/input.css:5:5] + 5 | ,-> .video:last-child { + 6 | | margin-right: 0; + 7 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/vercel/001/input.css:5:5] + 5 | ,-> .video:last-child { + 6 | | margin-right: 0; + 7 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/vercel/001/input.css:5:5] + 5 | ,-> .video:last-child { + 6 | | margin-right: 0; + 7 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/vercel/001/input.css:5:5] + 5 | .video:last-child { + : ^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:5:5] + 5 | .video:last-child { + : ^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:5:5] + 5 | .video:last-child { + : ^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:5:5] + 5 | .video:last-child { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:5:5] + 5 | .video:last-child { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:5:5] + 5 | .video:last-child { + : ^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:5:5] + 5 | .video:last-child { + : ^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:5:5] + 5 | .video:last-child { + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:5:5] + 5 | .video:last-child { + : ^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/vercel/001/input.css:5:5] + 5 | ,-> .video:last-child { + 6 | | margin-right: 0; + 7 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/001/input.css:6:9] + 6 | margin-right: 0; + : ^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/001/input.css:6:9] + 6 | margin-right: 0; + : ^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/001/input.css:6:9] + 6 | margin-right: 0; + : ^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/001/input.css:6:9] + 6 | margin-right: 0; + : ^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:6:9] + 6 | margin-right: 0; + : ^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/001/input.css:6:9] + 6 | margin-right: 0; + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/vercel/001/input.css:6:9] + 6 | margin-right: 0; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/001/input.css:8:5] + 8 | ,-> .video:first-child, + 9 | | .video:nth-child(5), + 10 | | .video:nth-child(9), + 11 | | .video:nth-child(13) { + 12 | | margin-left: 0; + 13 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/vercel/001/input.css:8:5] + 8 | ,-> .video:first-child, + 9 | | .video:nth-child(5), + 10 | | .video:nth-child(9), + 11 | | .video:nth-child(13) { + 12 | | margin-left: 0; + 13 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/vercel/001/input.css:8:5] + 8 | ,-> .video:first-child, + 9 | | .video:nth-child(5), + 10 | | .video:nth-child(9), + 11 | | .video:nth-child(13) { + 12 | | margin-left: 0; + 13 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/vercel/001/input.css:8:5] + 8 | ,-> .video:first-child, + 9 | | .video:nth-child(5), + 10 | | .video:nth-child(9), + 11 | `-> .video:nth-child(13) { + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:8:5] + 8 | .video:first-child, + : ^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:8:5] + 8 | .video:first-child, + : ^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:8:5] + 8 | .video:first-child, + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:8:5] + 8 | .video:first-child, + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:8:5] + 8 | .video:first-child, + : ^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:8:5] + 8 | .video:first-child, + : ^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:8:5] + 8 | .video:first-child, + : ^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:8:5] + 8 | .video:first-child, + : ^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:9:5] + 9 | .video:nth-child(5), + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:9:5] + 9 | .video:nth-child(5), + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:9:5] + 9 | .video:nth-child(5), + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:9:5] + 9 | .video:nth-child(5), + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:9:5] + 9 | .video:nth-child(5), + : ^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:9:5] + 9 | .video:nth-child(5), + : ^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:9:5] + 9 | .video:nth-child(5), + : ^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:9:5] + 9 | .video:nth-child(5), + : ^^^^^^^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/vercel/001/input.css:9:5] + 9 | .video:nth-child(5), + : ^ + `---- + + x AnPlusB + ,-[$DIR/tests/recovery/vercel/001/input.css:9:5] + 9 | .video:nth-child(5), + : ^ + `---- + + x AnPlusBNotation + ,-[$DIR/tests/recovery/vercel/001/input.css:9:5] + 9 | .video:nth-child(5), + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:10:5] + 10 | .video:nth-child(9), + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:10:5] + 10 | .video:nth-child(9), + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:10:5] + 10 | .video:nth-child(9), + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:10:5] + 10 | .video:nth-child(9), + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:10:5] + 10 | .video:nth-child(9), + : ^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:10:5] + 10 | .video:nth-child(9), + : ^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:10:5] + 10 | .video:nth-child(9), + : ^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:10:5] + 10 | .video:nth-child(9), + : ^^^^^^^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/vercel/001/input.css:10:5] + 10 | .video:nth-child(9), + : ^ + `---- + + x AnPlusB + ,-[$DIR/tests/recovery/vercel/001/input.css:10:5] + 10 | .video:nth-child(9), + : ^ + `---- + + x AnPlusBNotation + ,-[$DIR/tests/recovery/vercel/001/input.css:10:5] + 10 | .video:nth-child(9), + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:11:5] + 11 | .video:nth-child(13) { + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:11:5] + 11 | .video:nth-child(13) { + : ^^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:11:5] + 11 | .video:nth-child(13) { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:11:5] + 11 | .video:nth-child(13) { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:11:5] + 11 | .video:nth-child(13) { + : ^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:11:5] + 11 | .video:nth-child(13) { + : ^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/vercel/001/input.css:11:5] + 11 | .video:nth-child(13) { + : ^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:11:5] + 11 | .video:nth-child(13) { + : ^^^^^^^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/vercel/001/input.css:11:5] + 11 | .video:nth-child(13) { + : ^^ + `---- + + x AnPlusB + ,-[$DIR/tests/recovery/vercel/001/input.css:11:5] + 11 | .video:nth-child(13) { + : ^^ + `---- + + x AnPlusBNotation + ,-[$DIR/tests/recovery/vercel/001/input.css:11:5] + 11 | .video:nth-child(13) { + : ^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/vercel/001/input.css:11:5] + 11 | ,-> .video:nth-child(13) { + 12 | | margin-left: 0; + 13 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/001/input.css:12:9] + 12 | margin-left: 0; + : ^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/001/input.css:12:9] + 12 | margin-left: 0; + : ^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/001/input.css:12:9] + 12 | margin-left: 0; + : ^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/001/input.css:12:9] + 12 | margin-left: 0; + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/001/input.css:12:9] + 12 | margin-left: 0; + : ^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/001/input.css:12:9] + 12 | margin-left: 0; + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/vercel/001/input.css:12:9] + 12 | margin-left: 0; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/001/input.css:14:5] + 14 | __styled-jsx-placeholder__7 + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 15 | } + `---- + + x Rule + ,-[$DIR/tests/recovery/vercel/001/input.css:14:5] + 14 | __styled-jsx-placeholder__7 + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 15 | } + `---- + + x Tokens + ,-[$DIR/tests/recovery/vercel/001/input.css:14:5] + 14 | __styled-jsx-placeholder__7 + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 15 | } + `---- + + x Ident { value: Atom('__styled-jsx-placeholder__7' type=dynamic), raw: Atom('__styled-jsx-placeholder__7' type=dynamic) } + ,-[$DIR/tests/recovery/vercel/001/input.css:14:5] + 14 | __styled-jsx-placeholder__7 + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/vercel/001/input.css:14:5] + 14 | __styled-jsx-placeholder__7 + : ^ + 15 | } + `---- diff --git a/crates/swc_css_parser/tests/recovery/vercel/002/span.rust-debug b/crates/swc_css_parser/tests/recovery/vercel/002/span.rust-debug new file mode 100644 index 00000000000..031bf6580ee --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/vercel/002/span.rust-debug @@ -0,0 +1,988 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/vercel/002/input.css:1:1] + 1 | ,-> .slide { + 2 | | width: __styled-jsx-placeholder__7px; + 3 | | height: __styled-jsx-placeholder__7px; + 4 | | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + 5 | | border-radius: 7px; + 6 | | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + 7 | | 0 5px 12px rgba(0, 0, 0, 0.1); + 8 | | transition: all 0.5s ease; + 9 | | cursor: pointer; + 10 | | overflow: hidden; + 11 | | background: white; + 12 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/vercel/002/input.css:1:1] + 1 | ,-> .slide { + 2 | | width: __styled-jsx-placeholder__7px; + 3 | | height: __styled-jsx-placeholder__7px; + 4 | | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + 5 | | border-radius: 7px; + 6 | | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + 7 | | 0 5px 12px rgba(0, 0, 0, 0.1); + 8 | | transition: all 0.5s ease; + 9 | | cursor: pointer; + 10 | | overflow: hidden; + 11 | | background: white; + 12 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/vercel/002/input.css:1:1] + 1 | ,-> .slide { + 2 | | width: __styled-jsx-placeholder__7px; + 3 | | height: __styled-jsx-placeholder__7px; + 4 | | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + 5 | | border-radius: 7px; + 6 | | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + 7 | | 0 5px 12px rgba(0, 0, 0, 0.1); + 8 | | transition: all 0.5s ease; + 9 | | cursor: pointer; + 10 | | overflow: hidden; + 11 | | background: white; + 12 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/vercel/002/input.css:1:1] + 1 | .slide { + : ^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/vercel/002/input.css:1:1] + 1 | .slide { + : ^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/vercel/002/input.css:1:1] + 1 | .slide { + : ^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/vercel/002/input.css:1:1] + 1 | .slide { + : ^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/vercel/002/input.css:1:1] + 1 | .slide { + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:1:1] + 1 | .slide { + : ^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/vercel/002/input.css:1:1] + 1 | ,-> .slide { + 2 | | width: __styled-jsx-placeholder__7px; + 3 | | height: __styled-jsx-placeholder__7px; + 4 | | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + 5 | | border-radius: 7px; + 6 | | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + 7 | | 0 5px 12px rgba(0, 0, 0, 0.1); + 8 | | transition: all 0.5s ease; + 9 | | cursor: pointer; + 10 | | overflow: hidden; + 11 | | background: white; + 12 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:2:5] + 2 | width: __styled-jsx-placeholder__7px; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/002/input.css:2:5] + 2 | width: __styled-jsx-placeholder__7px; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/002/input.css:2:5] + 2 | width: __styled-jsx-placeholder__7px; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/002/input.css:2:5] + 2 | width: __styled-jsx-placeholder__7px; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:2:5] + 2 | width: __styled-jsx-placeholder__7px; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:2:5] + 2 | width: __styled-jsx-placeholder__7px; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:2:5] + 2 | width: __styled-jsx-placeholder__7px; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:3:5] + 3 | height: __styled-jsx-placeholder__7px; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/002/input.css:3:5] + 3 | height: __styled-jsx-placeholder__7px; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/002/input.css:3:5] + 3 | height: __styled-jsx-placeholder__7px; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/002/input.css:3:5] + 3 | height: __styled-jsx-placeholder__7px; + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:3:5] + 3 | height: __styled-jsx-placeholder__7px; + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:3:5] + 3 | height: __styled-jsx-placeholder__7px; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:3:5] + 3 | height: __styled-jsx-placeholder__7px; + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident { value: Atom('__styled-jsx-placeholder__7vw' type=dynamic), raw: Atom('__styled-jsx-placeholder__7vw' type=dynamic) } + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^ + `---- + + x Delim { value: '-' } + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident { value: Atom('__styled-jsx-placeholder__7px' type=dynamic), raw: Atom('__styled-jsx-placeholder__7px' type=dynamic) } + ,-[$DIR/tests/recovery/vercel/002/input.css:4:5] + 4 | margin: 0 calc(__styled-jsx-placeholder__7vw - __styled-jsx-placeholder__7px); + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:5:5] + 5 | border-radius: 7px; + : ^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/002/input.css:5:5] + 5 | border-radius: 7px; + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/002/input.css:5:5] + 5 | border-radius: 7px; + : ^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/002/input.css:5:5] + 5 | border-radius: 7px; + : ^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:5:5] + 5 | border-radius: 7px; + : ^^^^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:5:5] + 5 | border-radius: 7px; + : ^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/vercel/002/input.css:5:5] + 5 | border-radius: 7px; + : ^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/vercel/002/input.css:5:5] + 5 | border-radius: 7px; + : ^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/vercel/002/input.css:5:5] + 5 | border-radius: 7px; + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:5:5] + 5 | border-radius: 7px; + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | ,-> box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + 7 | `-> 0 5px 12px rgba(0, 0, 0, 0.1); + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | ,-> box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + 7 | `-> 0 5px 12px rgba(0, 0, 0, 0.1); + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | ,-> box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + 7 | `-> 0 5px 12px rgba(0, 0, 0, 0.1); + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Color + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^ + `---- + + x Number + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^ + `---- + + x Number + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^ + `---- + + x Number + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^^^ + `---- + + x AlphaValue + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/vercel/002/input.css:6:5] + 6 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.08), + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^^^^ + `---- + + x Length + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Color + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Function + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^ + `---- + + x Number + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^ + `---- + + x Number + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^ + `---- + + x Number + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^ + `---- + + x Delimiter + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^^^ + `---- + + x AlphaValue + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/vercel/002/input.css:7:9] + 7 | 0 5px 12px rgba(0, 0, 0, 0.1); + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:8:5] + 8 | transition: all 0.5s ease; + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/002/input.css:8:5] + 8 | transition: all 0.5s ease; + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/002/input.css:8:5] + 8 | transition: all 0.5s ease; + : ^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/002/input.css:8:5] + 8 | transition: all 0.5s ease; + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:8:5] + 8 | transition: all 0.5s ease; + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:8:5] + 8 | transition: all 0.5s ease; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:8:5] + 8 | transition: all 0.5s ease; + : ^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:8:5] + 8 | transition: all 0.5s ease; + : ^^^^ + `---- + + x Dimension + ,-[$DIR/tests/recovery/vercel/002/input.css:8:5] + 8 | transition: all 0.5s ease; + : ^^^^ + `---- + + x Time + ,-[$DIR/tests/recovery/vercel/002/input.css:8:5] + 8 | transition: all 0.5s ease; + : ^^^^ + `---- + + x Number + ,-[$DIR/tests/recovery/vercel/002/input.css:8:5] + 8 | transition: all 0.5s ease; + : ^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:8:5] + 8 | transition: all 0.5s ease; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:8:5] + 8 | transition: all 0.5s ease; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:8:5] + 8 | transition: all 0.5s ease; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:9:5] + 9 | cursor: pointer; + : ^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/002/input.css:9:5] + 9 | cursor: pointer; + : ^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/002/input.css:9:5] + 9 | cursor: pointer; + : ^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/002/input.css:9:5] + 9 | cursor: pointer; + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:9:5] + 9 | cursor: pointer; + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:9:5] + 9 | cursor: pointer; + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:9:5] + 9 | cursor: pointer; + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:10:5] + 10 | overflow: hidden; + : ^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/002/input.css:10:5] + 10 | overflow: hidden; + : ^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/002/input.css:10:5] + 10 | overflow: hidden; + : ^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/002/input.css:10:5] + 10 | overflow: hidden; + : ^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:10:5] + 10 | overflow: hidden; + : ^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:10:5] + 10 | overflow: hidden; + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:10:5] + 10 | overflow: hidden; + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:11:5] + 11 | background: white; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/002/input.css:11:5] + 11 | background: white; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/002/input.css:11:5] + 11 | background: white; + : ^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/002/input.css:11:5] + 11 | background: white; + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:11:5] + 11 | background: white; + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/002/input.css:11:5] + 11 | background: white; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/002/input.css:11:5] + 11 | background: white; + : ^^^^^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/vercel/003/span.rust-debug b/crates/swc_css_parser/tests/recovery/vercel/003/span.rust-debug new file mode 100644 index 00000000000..9c4a6a903f7 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/vercel/003/span.rust-debug @@ -0,0 +1,574 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/vercel/003/input.css:1:1] + 1 | ,-> .geist-list { + 2 | | display: flex; + 3 | | flex-wrap: wrap; + 4 | | margin: __ident__; + 5 | | box-sizing: border-box; + 6 | | } + 7 | | .geist-list :global(> .geist-list-item) { + 8 | | padding: __ident__; + 9 | | flex-grow: 0; + 10 | | flex-basis: __ident__%; + 11 | | min-width: 0; + 12 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/vercel/003/input.css:1:1] + 1 | ,-> .geist-list { + 2 | | display: flex; + 3 | | flex-wrap: wrap; + 4 | | margin: __ident__; + 5 | | box-sizing: border-box; + 6 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/vercel/003/input.css:1:1] + 1 | ,-> .geist-list { + 2 | | display: flex; + 3 | | flex-wrap: wrap; + 4 | | margin: __ident__; + 5 | | box-sizing: border-box; + 6 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/vercel/003/input.css:1:1] + 1 | .geist-list { + : ^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/vercel/003/input.css:1:1] + 1 | .geist-list { + : ^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/vercel/003/input.css:1:1] + 1 | .geist-list { + : ^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/vercel/003/input.css:1:1] + 1 | .geist-list { + : ^^^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/vercel/003/input.css:1:1] + 1 | .geist-list { + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/003/input.css:1:1] + 1 | .geist-list { + : ^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/vercel/003/input.css:1:1] + 1 | ,-> .geist-list { + 2 | | display: flex; + 3 | | flex-wrap: wrap; + 4 | | margin: __ident__; + 5 | | box-sizing: border-box; + 6 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/003/input.css:2:5] + 2 | display: flex; + : ^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/003/input.css:2:5] + 2 | display: flex; + : ^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/003/input.css:2:5] + 2 | display: flex; + : ^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/003/input.css:2:5] + 2 | display: flex; + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/003/input.css:2:5] + 2 | display: flex; + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/003/input.css:2:5] + 2 | display: flex; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/003/input.css:2:5] + 2 | display: flex; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/003/input.css:3:5] + 3 | flex-wrap: wrap; + : ^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/003/input.css:3:5] + 3 | flex-wrap: wrap; + : ^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/003/input.css:3:5] + 3 | flex-wrap: wrap; + : ^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/003/input.css:3:5] + 3 | flex-wrap: wrap; + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/003/input.css:3:5] + 3 | flex-wrap: wrap; + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/003/input.css:3:5] + 3 | flex-wrap: wrap; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/003/input.css:3:5] + 3 | flex-wrap: wrap; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/003/input.css:4:5] + 4 | margin: __ident__; + : ^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/003/input.css:4:5] + 4 | margin: __ident__; + : ^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/003/input.css:4:5] + 4 | margin: __ident__; + : ^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/003/input.css:4:5] + 4 | margin: __ident__; + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/003/input.css:4:5] + 4 | margin: __ident__; + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/003/input.css:4:5] + 4 | margin: __ident__; + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/003/input.css:4:5] + 4 | margin: __ident__; + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/003/input.css:5:5] + 5 | box-sizing: border-box; + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/003/input.css:5:5] + 5 | box-sizing: border-box; + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/003/input.css:5:5] + 5 | box-sizing: border-box; + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/003/input.css:5:5] + 5 | box-sizing: border-box; + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/003/input.css:5:5] + 5 | box-sizing: border-box; + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/003/input.css:5:5] + 5 | box-sizing: border-box; + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/003/input.css:5:5] + 5 | box-sizing: border-box; + : ^^^^^^^^^^ + `---- + + x Rule + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | ,-> .geist-list :global(> .geist-list-item) { + 8 | | padding: __ident__; + 9 | | flex-grow: 0; + 10 | | flex-basis: __ident__%; + 11 | | min-width: 0; + 12 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | ,-> .geist-list :global(> .geist-list-item) { + 8 | | padding: __ident__; + 9 | | flex-grow: 0; + 10 | | flex-basis: __ident__%; + 11 | | min-width: 0; + 12 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^^^^^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^^^^^^^^^^ + `---- + + x Combinator + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x PseudoClassSelector + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^^^^^^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^ + `---- + + x Delim { value: '>' } + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^ + `---- + + x Delim { value: '.' } + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^ + `---- + + x PseudoClassSelectorChildren + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^^^^^^^^^^^^^^^ + `---- + + x Ident { value: Atom('geist-list-item' type=dynamic), raw: Atom('geist-list-item' type=dynamic) } + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | .geist-list :global(> .geist-list-item) { + : ^^^^^^^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/vercel/003/input.css:7:1] + 7 | ,-> .geist-list :global(> .geist-list-item) { + 8 | | padding: __ident__; + 9 | | flex-grow: 0; + 10 | | flex-basis: __ident__%; + 11 | | min-width: 0; + 12 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/003/input.css:8:5] + 8 | padding: __ident__; + : ^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/003/input.css:8:5] + 8 | padding: __ident__; + : ^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/003/input.css:8:5] + 8 | padding: __ident__; + : ^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/003/input.css:8:5] + 8 | padding: __ident__; + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/003/input.css:8:5] + 8 | padding: __ident__; + : ^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/003/input.css:8:5] + 8 | padding: __ident__; + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/003/input.css:8:5] + 8 | padding: __ident__; + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/003/input.css:9:5] + 9 | flex-grow: 0; + : ^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/003/input.css:9:5] + 9 | flex-grow: 0; + : ^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/003/input.css:9:5] + 9 | flex-grow: 0; + : ^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/003/input.css:9:5] + 9 | flex-grow: 0; + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/003/input.css:9:5] + 9 | flex-grow: 0; + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/003/input.css:9:5] + 9 | flex-grow: 0; + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/vercel/003/input.css:9:5] + 9 | flex-grow: 0; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/003/input.css:10:5] + 10 | flex-basis: __ident__%; + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/003/input.css:10:5] + 10 | flex-basis: __ident__%; + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/003/input.css:10:5] + 10 | flex-basis: __ident__%; + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/003/input.css:10:5] + 10 | flex-basis: __ident__%; + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/003/input.css:10:5] + 10 | flex-basis: __ident__%; + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/003/input.css:10:5] + 10 | flex-basis: __ident__%; + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/003/input.css:10:5] + 10 | flex-basis: __ident__%; + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/003/input.css:10:5] + 10 | flex-basis: __ident__%; + : ^ + `---- + + x Delim { value: '%' } + ,-[$DIR/tests/recovery/vercel/003/input.css:10:5] + 10 | flex-basis: __ident__%; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/003/input.css:11:5] + 11 | min-width: 0; + : ^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/003/input.css:11:5] + 11 | min-width: 0; + : ^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/003/input.css:11:5] + 11 | min-width: 0; + : ^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/003/input.css:11:5] + 11 | min-width: 0; + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/003/input.css:11:5] + 11 | min-width: 0; + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/003/input.css:11:5] + 11 | min-width: 0; + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/vercel/003/input.css:11:5] + 11 | min-width: 0; + : ^ + `---- diff --git a/crates/swc_css_parser/tests/recovery/vercel/004/span.rust-debug b/crates/swc_css_parser/tests/recovery/vercel/004/span.rust-debug new file mode 100644 index 00000000000..27e5626a05d --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/vercel/004/span.rust-debug @@ -0,0 +1,347 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/vercel/004/input.css:1:1] + 1 | ,-> a.invert { + 2 | | margin: 0; + 3 | | __ident__ + 4 | | border-radius: 7px; + 5 | | color: white; + 6 | | background: __ident__; + 7 | | __ident__ + 8 | | __ident__ + 9 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/vercel/004/input.css:1:1] + 1 | ,-> a.invert { + 2 | | margin: 0; + 3 | | __ident__ + 4 | | border-radius: 7px; + 5 | | color: white; + 6 | | background: __ident__; + 7 | | __ident__ + 8 | | __ident__ + 9 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/vercel/004/input.css:1:1] + 1 | ,-> a.invert { + 2 | | margin: 0; + 3 | | __ident__ + 4 | | border-radius: 7px; + 5 | | color: white; + 6 | | background: __ident__; + 7 | | __ident__ + 8 | | __ident__ + 9 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/vercel/004/input.css:1:1] + 1 | a.invert { + : ^^^^^^^^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/vercel/004/input.css:1:1] + 1 | a.invert { + : ^^^^^^^^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/vercel/004/input.css:1:1] + 1 | a.invert { + : ^^^^^^^^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/vercel/004/input.css:1:1] + 1 | a.invert { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/vercel/004/input.css:1:1] + 1 | a.invert { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/vercel/004/input.css:1:1] + 1 | a.invert { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/004/input.css:1:1] + 1 | a.invert { + : ^ + `---- + + x SubclassSelector + ,-[$DIR/tests/recovery/vercel/004/input.css:1:1] + 1 | a.invert { + : ^^^^^^^ + `---- + + x ClassSelector + ,-[$DIR/tests/recovery/vercel/004/input.css:1:1] + 1 | a.invert { + : ^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/004/input.css:1:1] + 1 | a.invert { + : ^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/vercel/004/input.css:1:1] + 1 | ,-> a.invert { + 2 | | margin: 0; + 3 | | __ident__ + 4 | | border-radius: 7px; + 5 | | color: white; + 6 | | background: __ident__; + 7 | | __ident__ + 8 | | __ident__ + 9 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/004/input.css:2:5] + 2 | margin: 0; + : ^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/004/input.css:2:5] + 2 | margin: 0; + : ^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/004/input.css:2:5] + 2 | margin: 0; + : ^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/004/input.css:2:5] + 2 | margin: 0; + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/004/input.css:2:5] + 2 | margin: 0; + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/004/input.css:2:5] + 2 | margin: 0; + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/vercel/004/input.css:2:5] + 2 | margin: 0; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/004/input.css:3:5] + 3 | ,-> __ident__ + 4 | `-> border-radius: 7px; + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/004/input.css:3:5] + 3 | ,-> __ident__ + 4 | `-> border-radius: 7px; + `---- + + x Tokens + ,-[$DIR/tests/recovery/vercel/004/input.css:3:5] + 3 | ,-> __ident__ + 4 | `-> border-radius: 7px; + `---- + + x Ident { value: Atom('__ident__' type=dynamic), raw: Atom('__ident__' type=dynamic) } + ,-[$DIR/tests/recovery/vercel/004/input.css:3:5] + 3 | __ident__ + : ^^^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/vercel/004/input.css:3:5] + 3 | ,-> __ident__ + 4 | `-> border-radius: 7px; + `---- + + x Ident { value: Atom('border-radius' type=dynamic), raw: Atom('border-radius' type=dynamic) } + ,-[$DIR/tests/recovery/vercel/004/input.css:4:5] + 4 | border-radius: 7px; + : ^^^^^^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/vercel/004/input.css:4:5] + 4 | border-radius: 7px; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/vercel/004/input.css:4:5] + 4 | border-radius: 7px; + : ^ + `---- + + x Dimension { value: 7.0, raw_value: Atom('7' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/vercel/004/input.css:4:5] + 4 | border-radius: 7px; + : ^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/vercel/004/input.css:4:5] + 4 | border-radius: 7px; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/004/input.css:5:5] + 5 | color: white; + : ^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/004/input.css:5:5] + 5 | color: white; + : ^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/004/input.css:5:5] + 5 | color: white; + : ^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/004/input.css:5:5] + 5 | color: white; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/004/input.css:5:5] + 5 | color: white; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/004/input.css:5:5] + 5 | color: white; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/004/input.css:5:5] + 5 | color: white; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/004/input.css:6:5] + 6 | background: __ident__; + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/004/input.css:6:5] + 6 | background: __ident__; + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/004/input.css:6:5] + 6 | background: __ident__; + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/004/input.css:6:5] + 6 | background: __ident__; + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/004/input.css:6:5] + 6 | background: __ident__; + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/004/input.css:6:5] + 6 | background: __ident__; + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/004/input.css:6:5] + 6 | background: __ident__; + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/004/input.css:7:5] + 7 | ,-> __ident__ + 8 | `-> __ident__ + 9 | } + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/vercel/004/input.css:7:5] + 7 | ,-> __ident__ + 8 | `-> __ident__ + 9 | } + `---- + + x Tokens + ,-[$DIR/tests/recovery/vercel/004/input.css:7:5] + 7 | ,-> __ident__ + 8 | `-> __ident__ + 9 | } + `---- + + x Ident { value: Atom('__ident__' type=dynamic), raw: Atom('__ident__' type=dynamic) } + ,-[$DIR/tests/recovery/vercel/004/input.css:7:5] + 7 | __ident__ + : ^^^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/vercel/004/input.css:7:5] + 7 | ,-> __ident__ + 8 | `-> __ident__ + `---- + + x Ident { value: Atom('__ident__' type=dynamic), raw: Atom('__ident__' type=dynamic) } + ,-[$DIR/tests/recovery/vercel/004/input.css:8:5] + 8 | __ident__ + : ^^^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/vercel/004/input.css:8:5] + 8 | __ident__ + : ^ + 9 | } + `---- diff --git a/crates/swc_css_parser/tests/recovery/vercel/005/span.rust-debug b/crates/swc_css_parser/tests/recovery/vercel/005/span.rust-debug new file mode 100644 index 00000000000..f945abdf904 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/vercel/005/span.rust-debug @@ -0,0 +1,268 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/vercel/005/input.css:1:1] + 1 | ,-> @font-face { + 2 | | margin: 0; + 3 | | __ident__ + 4 | | border-radius: 7px; + 5 | | color: white; + 6 | | background: __ident__; + 7 | | __ident__ + 8 | | __ident__ + 9 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/vercel/005/input.css:1:1] + 1 | ,-> @font-face { + 2 | | margin: 0; + 3 | | __ident__ + 4 | | border-radius: 7px; + 5 | | color: white; + 6 | | background: __ident__; + 7 | | __ident__ + 8 | | __ident__ + 9 | `-> } + `---- + + x AtRule + ,-[$DIR/tests/recovery/vercel/005/input.css:1:1] + 1 | ,-> @font-face { + 2 | | margin: 0; + 3 | | __ident__ + 4 | | border-radius: 7px; + 5 | | color: white; + 6 | | background: __ident__; + 7 | | __ident__ + 8 | | __ident__ + 9 | `-> } + `---- + + x AtRuleName + ,-[$DIR/tests/recovery/vercel/005/input.css:1:1] + 1 | @font-face { + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/005/input.css:1:1] + 1 | @font-face { + : ^^^^^^^^^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/vercel/005/input.css:1:1] + 1 | ,-> @font-face { + 2 | | margin: 0; + 3 | | __ident__ + 4 | | border-radius: 7px; + 5 | | color: white; + 6 | | background: __ident__; + 7 | | __ident__ + 8 | | __ident__ + 9 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/005/input.css:2:5] + 2 | margin: 0; + : ^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/005/input.css:2:5] + 2 | margin: 0; + : ^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/005/input.css:2:5] + 2 | margin: 0; + : ^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/005/input.css:2:5] + 2 | margin: 0; + : ^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/005/input.css:2:5] + 2 | margin: 0; + : ^ + `---- + + x Integer + ,-[$DIR/tests/recovery/vercel/005/input.css:2:5] + 2 | margin: 0; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/005/input.css:3:5] + 3 | ,-> __ident__ + 4 | `-> border-radius: 7px; + `---- + + x Tokens + ,-[$DIR/tests/recovery/vercel/005/input.css:3:5] + 3 | ,-> __ident__ + 4 | `-> border-radius: 7px; + `---- + + x Ident { value: Atom('__ident__' type=dynamic), raw: Atom('__ident__' type=dynamic) } + ,-[$DIR/tests/recovery/vercel/005/input.css:3:5] + 3 | __ident__ + : ^^^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/vercel/005/input.css:3:5] + 3 | ,-> __ident__ + 4 | `-> border-radius: 7px; + `---- + + x Ident { value: Atom('border-radius' type=dynamic), raw: Atom('border-radius' type=dynamic) } + ,-[$DIR/tests/recovery/vercel/005/input.css:4:5] + 4 | border-radius: 7px; + : ^^^^^^^^^^^^^ + `---- + + x Colon + ,-[$DIR/tests/recovery/vercel/005/input.css:4:5] + 4 | border-radius: 7px; + : ^ + `---- + + x WhiteSpace { value: Atom(' ' type=inline) } + ,-[$DIR/tests/recovery/vercel/005/input.css:4:5] + 4 | border-radius: 7px; + : ^ + `---- + + x Dimension { value: 7.0, raw_value: Atom('7' type=inline), unit: Atom('px' type=inline), raw_unit: Atom('px' type=inline), type_flag: Integer } + ,-[$DIR/tests/recovery/vercel/005/input.css:4:5] + 4 | border-radius: 7px; + : ^^^ + `---- + + x Semi + ,-[$DIR/tests/recovery/vercel/005/input.css:4:5] + 4 | border-radius: 7px; + : ^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/005/input.css:5:5] + 5 | color: white; + : ^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/005/input.css:5:5] + 5 | color: white; + : ^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/005/input.css:5:5] + 5 | color: white; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/005/input.css:5:5] + 5 | color: white; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/005/input.css:5:5] + 5 | color: white; + : ^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/005/input.css:5:5] + 5 | color: white; + : ^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/005/input.css:6:5] + 6 | background: __ident__; + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/vercel/005/input.css:6:5] + 6 | background: __ident__; + : ^^^^^^^^^^^^^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/vercel/005/input.css:6:5] + 6 | background: __ident__; + : ^^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/005/input.css:6:5] + 6 | background: __ident__; + : ^^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/005/input.css:6:5] + 6 | background: __ident__; + : ^^^^^^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/vercel/005/input.css:6:5] + 6 | background: __ident__; + : ^^^^^^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/vercel/005/input.css:7:5] + 7 | ,-> __ident__ + 8 | `-> __ident__ + 9 | } + `---- + + x Tokens + ,-[$DIR/tests/recovery/vercel/005/input.css:7:5] + 7 | ,-> __ident__ + 8 | `-> __ident__ + 9 | } + `---- + + x Ident { value: Atom('__ident__' type=dynamic), raw: Atom('__ident__' type=dynamic) } + ,-[$DIR/tests/recovery/vercel/005/input.css:7:5] + 7 | __ident__ + : ^^^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/vercel/005/input.css:7:5] + 7 | ,-> __ident__ + 8 | `-> __ident__ + `---- + + x Ident { value: Atom('__ident__' type=dynamic), raw: Atom('__ident__' type=dynamic) } + ,-[$DIR/tests/recovery/vercel/005/input.css:8:5] + 8 | __ident__ + : ^^^^^^^^^ + `---- + + x WhiteSpace { value: Atom(' + | ' type=inline) } + ,-[$DIR/tests/recovery/vercel/005/input.css:8:5] + 8 | __ident__ + : ^ + 9 | } + `---- diff --git a/crates/swc_css_parser/tests/recovery/whitespaces/span.rust-debug b/crates/swc_css_parser/tests/recovery/whitespaces/span.rust-debug new file mode 100644 index 00000000000..9e3a1f37f15 --- /dev/null +++ b/crates/swc_css_parser/tests/recovery/whitespaces/span.rust-debug @@ -0,0 +1,224 @@ + + x Stylesheet + ,-[$DIR/tests/recovery/whitespaces/input.css:1:1] + 1 | ,-> a { + 2 | | prop: ; + 3 | | prop: ; + 4 | | prop: + 5 | | + 6 | | ; + 7 | | prop: + 8 | | + 9 | | ; + 10 | `-> } + `---- + + x Rule + ,-[$DIR/tests/recovery/whitespaces/input.css:1:1] + 1 | ,-> a { + 2 | | prop: ; + 3 | | prop: ; + 4 | | prop: + 5 | | + 6 | | ; + 7 | | prop: + 8 | | + 9 | | ; + 10 | `-> } + `---- + + x QualifiedRule + ,-[$DIR/tests/recovery/whitespaces/input.css:1:1] + 1 | ,-> a { + 2 | | prop: ; + 3 | | prop: ; + 4 | | prop: + 5 | | + 6 | | ; + 7 | | prop: + 8 | | + 9 | | ; + 10 | `-> } + `---- + + x SelectorList + ,-[$DIR/tests/recovery/whitespaces/input.css:1:1] + 1 | a { + : ^ + `---- + + x ComplexSelector + ,-[$DIR/tests/recovery/whitespaces/input.css:1:1] + 1 | a { + : ^ + `---- + + x CompoundSelector + ,-[$DIR/tests/recovery/whitespaces/input.css:1:1] + 1 | a { + : ^ + `---- + + x TypeSelector + ,-[$DIR/tests/recovery/whitespaces/input.css:1:1] + 1 | a { + : ^ + `---- + + x TagNameSelector + ,-[$DIR/tests/recovery/whitespaces/input.css:1:1] + 1 | a { + : ^ + `---- + + x WqName + ,-[$DIR/tests/recovery/whitespaces/input.css:1:1] + 1 | a { + : ^ + `---- + + x Ident + ,-[$DIR/tests/recovery/whitespaces/input.css:1:1] + 1 | a { + : ^ + `---- + + x SimpleBlock + ,-[$DIR/tests/recovery/whitespaces/input.css:1:1] + 1 | ,-> a { + 2 | | prop: ; + 3 | | prop: ; + 4 | | prop: + 5 | | + 6 | | ; + 7 | | prop: + 8 | | + 9 | | ; + 10 | `-> } + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/whitespaces/input.css:2:5] + 2 | prop: ; + : ^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/whitespaces/input.css:2:5] + 2 | prop: ; + : ^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/whitespaces/input.css:2:5] + 2 | prop: ; + : ^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/whitespaces/input.css:2:5] + 2 | prop: ; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/whitespaces/input.css:2:5] + 2 | prop: ; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/whitespaces/input.css:3:5] + 3 | prop: ; + : ^^^^^^^^^^ + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/whitespaces/input.css:3:5] + 3 | prop: ; + : ^^^^^^^^^^ + `---- + + x Declaration + ,-[$DIR/tests/recovery/whitespaces/input.css:3:5] + 3 | prop: ; + : ^^^^^^^^^^ + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/whitespaces/input.css:3:5] + 3 | prop: ; + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/whitespaces/input.css:3:5] + 3 | prop: ; + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/whitespaces/input.css:4:5] + 4 | ,-> prop: + 5 | | + 6 | `-> ; + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/whitespaces/input.css:4:5] + 4 | ,-> prop: + 5 | | + 6 | `-> ; + `---- + + x Declaration + ,-[$DIR/tests/recovery/whitespaces/input.css:4:5] + 4 | ,-> prop: + 5 | | + 6 | `-> ; + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/whitespaces/input.css:4:5] + 4 | prop: + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/whitespaces/input.css:4:5] + 4 | prop: + : ^^^^ + `---- + + x ComponentValue + ,-[$DIR/tests/recovery/whitespaces/input.css:7:5] + 7 | ,-> prop: + 8 | | + 9 | `-> ; + `---- + + x StyleBlock + ,-[$DIR/tests/recovery/whitespaces/input.css:7:5] + 7 | ,-> prop: + 8 | | + 9 | `-> ; + `---- + + x Declaration + ,-[$DIR/tests/recovery/whitespaces/input.css:7:5] + 7 | ,-> prop: + 8 | | + 9 | `-> ; + `---- + + x DeclarationName + ,-[$DIR/tests/recovery/whitespaces/input.css:7:5] + 7 | prop: + : ^^^^ + `---- + + x Ident + ,-[$DIR/tests/recovery/whitespaces/input.css:7:5] + 7 | prop: + : ^^^^ + `----