| Index: packages/csslib/lib/src/tokenizer.dart
|
| diff --git a/packages/csslib/lib/src/tokenizer.dart b/packages/csslib/lib/src/tokenizer.dart
|
| index d423104bae92eb05e5a278fb249e603021de8486..d7677f9f211501f1c1564d1de483debc016f9ef7 100644
|
| --- a/packages/csslib/lib/src/tokenizer.dart
|
| +++ b/packages/csslib/lib/src/tokenizer.dart
|
| @@ -97,7 +97,7 @@ class Tokenizer extends TokenizerBase {
|
| case TokenChar.HASH:
|
| return _finishToken(TokenKind.HASH);
|
| case TokenChar.PLUS:
|
| - if (maybeEatDigit()) return finishNumber();
|
| + if (_nextCharsAreNumber(ch)) return finishNumber();
|
| return _finishToken(TokenKind.PLUS);
|
| case TokenChar.MINUS:
|
| if (inSelectorExpression || unicodeRange) {
|
| @@ -105,7 +105,7 @@ class Tokenizer extends TokenizerBase {
|
| // not part of identifier e.g., interval value range (e.g. U+400-4ff)
|
| // or minus operator in selector expression.
|
| return _finishToken(TokenKind.MINUS);
|
| - } else if (maybeEatDigit()) {
|
| + } else if (_nextCharsAreNumber(ch)) {
|
| return finishNumber();
|
| } else if (TokenizerHelpers.isIdentifierStart(ch)) {
|
| return finishIdentifier();
|
| @@ -202,8 +202,13 @@ class Tokenizer extends TokenizerBase {
|
| } else {
|
| return _errorToken();
|
| }
|
| - } else if ((ch == UNICODE_U || ch == UNICODE_LOWER_U) &&
|
| + } else if (_inString &&
|
| + (ch == UNICODE_U || ch == UNICODE_LOWER_U) &&
|
| (_peekChar() == UNICODE_PLUS)) {
|
| + // `_inString` is misleading. We actually DON'T want to enter this
|
| + // block while tokenizing a string, but the parser sets this value to
|
| + // false while it IS consuming tokens within a string.
|
| + //
|
| // Unicode range: U+uNumber[-U+uNumber]
|
| // uNumber = 0..10FFFF
|
| _nextChar(); // Skip +
|
| @@ -260,7 +265,7 @@ class Tokenizer extends TokenizerBase {
|
| Token finishIdentifier() {
|
| // If we encounter an escape sequence, remember it so we can post-process
|
| // to unescape.
|
| - var chars = [];
|
| + var chars = <int>[];
|
|
|
| // backup so we can start with the first character
|
| int validateFrom = _index;
|
| @@ -414,7 +419,6 @@ class Tokenizer extends TokenizerBase {
|
| }
|
| }
|
| }
|
| - return _errorToken();
|
| }
|
| }
|
|
|
| @@ -446,7 +450,9 @@ class TokenizerHelpers {
|
| // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
|
| // http://www.w3.org/TR/CSS21/syndata.html#characters
|
| // Also, escaped character should be allowed.
|
| - c == 95 /*_*/ || c >= 0xA0 || c == 92 /*\*/);
|
| + c == 95 /*_*/ ||
|
| + c >= 0xA0 ||
|
| + c == 92 /*\*/);
|
| }
|
|
|
| /** Pseudo function expressions identifiers can't have a minus sign. */
|
|
|