@@ -2493,27 +2493,38 @@ abstract class StylesheetParser extends Parser {
2493
2493
expectIdentChar ($u);
2494
2494
scanner.expectChar ($plus);
2495
2495
2496
- var i = 0 ;
2497
- for (; i < 6 ; i ++ ) {
2498
- if ( ! scanCharIf ((char) => char != null && isHex (char))) break ;
2496
+ var firstRangeLength = 0 ;
2497
+ while ( scanCharIf ((char) => char != null && isHex (char)) ) {
2498
+ firstRangeLength ++ ;
2499
2499
}
2500
2500
2501
- if (scanner.scanChar ($question)) {
2502
- i++ ;
2503
- for (; i < 6 ; i++ ) {
2504
- if (! scanner.scanChar ($question)) break ;
2505
- }
2501
+ var hasQuestionMark = false ;
2502
+ while (scanner.scanChar ($question)) {
2503
+ hasQuestionMark = true ;
2504
+ firstRangeLength++ ;
2505
+ }
2506
+
2507
+ if (firstRangeLength == 0 ) {
2508
+ scanner.error ('Expected hex digit or "?".' );
2509
+ } else if (firstRangeLength > 6 ) {
2510
+ error ("Expected at most 6 digits." , scanner.spanFrom (start));
2511
+ } else if (hasQuestionMark) {
2506
2512
return StringExpression .plain (
2507
2513
scanner.substring (start.position), scanner.spanFrom (start));
2508
2514
}
2509
- if (i == 0 ) scanner.error ('Expected hex digit or "?".' );
2510
2515
2511
2516
if (scanner.scanChar ($minus)) {
2512
- var j = 0 ;
2513
- for (; j < 6 ; j++ ) {
2514
- if (! scanCharIf ((char) => char != null && isHex (char))) break ;
2517
+ var secondRangeStart = scanner.state;
2518
+ var secondRangeLength = 0 ;
2519
+ while (scanCharIf ((char) => char != null && isHex (char))) {
2520
+ secondRangeLength++ ;
2521
+ }
2522
+
2523
+ if (secondRangeLength == 0 ) {
2524
+ scanner.error ("Expected hex digit." );
2525
+ } else if (secondRangeLength > 6 ) {
2526
+ error ("Expected at most 6 digits." , scanner.spanFrom (secondRangeStart));
2515
2527
}
2516
- if (j == 0 ) scanner.error ("Expected hex digit." );
2517
2528
}
2518
2529
2519
2530
if (_lookingAtInterpolatedIdentifierBody ()) {
0 commit comments