mirror of
https://github.com/danog/dart-sass.git
synced 2024-11-27 04:34:59 +01:00
Produce a better error for invalid function contents (#587)
Closes #584
This commit is contained in:
parent
a81017275a
commit
7ca989a4f7
@ -9,6 +9,9 @@
|
||||
* Produce a better error message for style rules that are missing the closing
|
||||
`}`.
|
||||
|
||||
* Produce a better error message for style rules and property declarations
|
||||
within `@function` rules.
|
||||
|
||||
### Command-Line Interface
|
||||
|
||||
* Passing a directory on the command line now compiles all Sass source files in
|
||||
|
@ -451,7 +451,7 @@ abstract class StylesheetParser extends Parser {
|
||||
// here should be mirrored there.
|
||||
|
||||
var start = scanner.state;
|
||||
scanner.expectChar($at);
|
||||
scanner.expectChar($at, name: "@-rule");
|
||||
var name = interpolatedIdentifier();
|
||||
whitespace();
|
||||
|
||||
@ -536,6 +536,23 @@ abstract class StylesheetParser extends Parser {
|
||||
|
||||
/// Consumes an at-rule allowed within a function.
|
||||
Statement _functionAtRule() {
|
||||
if (scanner.peekChar() != $at) {
|
||||
var position = scanner.position;
|
||||
Statement statement;
|
||||
try {
|
||||
statement = _declarationOrStyleRule();
|
||||
} on SourceSpanFormatException catch (_) {
|
||||
// If we can't parse a valid declaration or style rule, throw a more
|
||||
// generic error message.
|
||||
scanner.error("expected @-rule", position: position);
|
||||
}
|
||||
|
||||
error(
|
||||
"@function rules may not contain "
|
||||
"${statement is StyleRule ? "style rules" : "declarations"}.",
|
||||
statement.span);
|
||||
}
|
||||
|
||||
var start = scanner.state;
|
||||
switch (_plainAtRuleName()) {
|
||||
case "debug":
|
||||
@ -563,7 +580,7 @@ abstract class StylesheetParser extends Parser {
|
||||
|
||||
/// Consumes an at-rule's name, with interpolation disallowed.
|
||||
String _plainAtRuleName() {
|
||||
scanner.expectChar($at);
|
||||
scanner.expectChar($at, name: "@-rule");
|
||||
var name = identifier();
|
||||
whitespace();
|
||||
return name;
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: sass
|
||||
version: 1.17.0-dev
|
||||
version: 1.17.0
|
||||
description: A Sass implementation in Dart.
|
||||
author: Dart Team <misc@dartlang.org>
|
||||
homepage: https://github.com/sass/dart-sass
|
||||
|
Loading…
Reference in New Issue
Block a user