Skip to content

Commit

Permalink
Fix the parsing of supports function in static imports (#1514)
Browse files Browse the repository at this point in the history
  • Loading branch information
stof committed Oct 6, 2021
1 parent 6641459 commit d667843
Showing 1 changed file with 24 additions and 5 deletions.
29 changes: 24 additions & 5 deletions lib/src/parse/stylesheet.dart
Expand Up @@ -1150,11 +1150,30 @@ abstract class StylesheetParser extends Parser {
} else if (scanner.peekChar() == $lparen) {
supports = _supportsCondition();
} else {
var name = expression();
scanner.expectChar($colon);
whitespace();
var value = expression();
supports = SupportsDeclaration(name, value, scanner.spanFrom(start));
if (_lookingAtInterpolatedIdentifier()) {
var identifier = interpolatedIdentifier();
if (identifier.asPlain?.toLowerCase() == "not") {
error('"not" is not a valid identifier here.', identifier.span);
}

if (scanner.scanChar($lparen)) {
var arguments = _interpolatedDeclarationValue(
allowEmpty: true, allowSemicolon: true);
scanner.expectChar($rparen);
supports = SupportsFunction(
identifier, arguments, scanner.spanFrom(start));
} else {
// Backtrack to parse a variable declaration
scanner.state = start;
}
}
if (supports == null) {
var name = expression();
scanner.expectChar($colon);
whitespace();
var value = expression();
supports = SupportsDeclaration(name, value, scanner.spanFrom(start));
}
}
scanner.expectChar($rparen);
whitespace();
Expand Down

0 comments on commit d667843

Please sign in to comment.