@@ -75,7 +75,7 @@ public static function parse(ParserState $parserState, ?CSSList $list = null): ?
7575 } catch (UnexpectedTokenException $ e ) {
7676 if ($ parserState ->getSettings ()->usesLenientParsing ()) {
7777 if (!$ parserState ->consumeIfComes ('} ' )) {
78- $ parserState ->consumeUntil ('} ' , false , true );
78+ $ parserState ->consumeUntil ([ '} ' , ParserState:: EOF ] , false , true );
7979 }
8080 return null ;
8181 } else {
@@ -307,7 +307,6 @@ private static function parseSelector(ParserState $parserState, array &$comments
307307 static $ stopCharacters = ['{ ' , '} ' , '\'' , '" ' , '( ' , ') ' , ', ' ];
308308
309309 while (true ) {
310- $ selectorParts [] = $ parserState ->consume (1 );
311310 $ selectorParts [] = $ parserState ->consumeUntil ($ stopCharacters , false , false , $ comments );
312311 $ nextCharacter = $ parserState ->peek ();
313312 switch ($ nextCharacter ) {
@@ -348,12 +347,18 @@ private static function parseSelector(ParserState $parserState, array &$comments
348347 }
349348 break ;
350349 }
350+ $ selectorParts [] = $ parserState ->consume (1 );
351351 }
352352
353353 if ($ functionNestingLevel !== 0 ) {
354354 throw new UnexpectedTokenException (') ' , $ nextCharacter );
355355 }
356356
357- return \implode ('' , $ selectorParts );
357+ $ selector = \implode ('' , $ selectorParts );
358+ if ($ selector === '' ) {
359+ throw new UnexpectedTokenException ('selector ' , $ nextCharacter , 'literal ' , $ parserState ->currentLine ());
360+ }
361+
362+ return $ selector ;
358363 }
359364}
0 commit comments