Skip to content

Commit 1dd0b94

Browse files
committed
remove error recovery for CSS meta-syntax and ";"
1 parent cccc6c6 commit 1dd0b94

File tree

3 files changed

+7
-22
lines changed

3 files changed

+7
-22
lines changed

internal/css_parser/css_parser.go

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1295,15 +1295,6 @@ loop:
12951295
case css_lexer.TOpenBrace, css_lexer.TEndOfFile:
12961296
break loop
12971297

1298-
case css_lexer.TSemicolon:
1299-
// Error recovery if the block is omitted (likely some CSS meta-syntax)
1300-
if !isAlreadyInvalid {
1301-
p.expect(css_lexer.TOpenBrace)
1302-
}
1303-
prelude := p.convertTokens(p.tokens[preludeStart:p.index])
1304-
p.advance()
1305-
return css_ast.Rule{Loc: preludeLoc, Data: &css_ast.RQualified{Prelude: prelude}}
1306-
13071298
default:
13081299
p.parseComponentValue()
13091300
}
@@ -1343,15 +1334,6 @@ stop:
13431334
case css_lexer.TEndOfFile, css_lexer.TSemicolon, css_lexer.TCloseBrace:
13441335
break stop
13451336

1346-
case css_lexer.TOpenBrace:
1347-
// Error recovery if there is an unexpected block (likely some CSS meta-syntax)
1348-
p.parseComponentValue()
1349-
p.eat(css_lexer.TWhitespace)
1350-
if ok && !p.peek(css_lexer.TSemicolon) {
1351-
p.expect(css_lexer.TSemicolon)
1352-
}
1353-
break stop
1354-
13551337
default:
13561338
p.parseComponentValue()
13571339
}

internal/css_parser/css_parser_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -738,9 +738,10 @@ func TestBadQualifiedRules(t *testing.T) {
738738
expectParseError(t, "$bad: rule;", "<stdin>: WARNING: Unexpected \"$\"\n")
739739
expectParseError(t, "$bad { color: red }", "<stdin>: WARNING: Unexpected \"$\"\n")
740740
expectParseError(t, "a { div.major { color: blue } color: red }", "<stdin>: WARNING: Expected \":\" but found \".\"\n")
741-
expectParseError(t, "a { div:hover { color: blue } color: red }", "<stdin>: WARNING: Expected \";\"\n")
741+
expectParseError(t, "a { div:hover { color: blue } color: red }", "")
742742
expectParseError(t, "a { div:hover { color: blue }; color: red }", "")
743743
expectParseError(t, "a { div:hover { color: blue } ; color: red }", "")
744+
expectParseError(t, "! { x: {} }", "<stdin>: WARNING: Unexpected \"!\"\n")
744745
}
745746

746747
func TestAtRule(t *testing.T) {

internal/css_printer/css_printer_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,11 @@ func TestNestedSelector(t *testing.T) {
145145
}
146146

147147
func TestBadQualifiedRules(t *testing.T) {
148-
expectPrinted(t, "$bad: rule;", "$bad: rule {\n}\n")
149-
expectPrinted(t, "a { div.major { color: blue } color: red }", "a {\n div.major { color: blue };\n color: red;\n}\n")
150-
expectPrinted(t, "a { div:hover { color: blue } color: red }", "a {\n div: hover { color: blue };\n color: red;\n}\n")
148+
expectPrinted(t, ";", "; {\n}\n")
149+
expectPrinted(t, "$bad: rule;", "$bad: rule; {\n}\n")
150+
expectPrinted(t, "a {}; b {};", "a {\n}\n; b {\n}\n; {\n}\n")
151+
expectPrinted(t, "a { div.major { color: blue } color: red }", "a {\n div.major { color: blue } color: red;\n}\n")
152+
expectPrinted(t, "a { div:hover { color: blue } color: red }", "a {\n div: hover { color: blue } color: red;\n}\n")
151153
expectPrinted(t, "a { div:hover { color: blue }; color: red }", "a {\n div: hover { color: blue };\n color: red;\n}\n")
152154

153155
expectPrinted(t, "$bad{ color: red }", "$bad {\n color: red;\n}\n")

0 commit comments

Comments
 (0)