Skip to content

Commit

Permalink
Make required span parameters positional (#1380)
Browse files Browse the repository at this point in the history
Required non-boolean parameters should pretty much always be
positional. These were still named from back when spans were nullable
in Sass.
  • Loading branch information
nex3 committed Jun 25, 2021
1 parent 655fcfc commit 268f22e
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 30 deletions.
2 changes: 1 addition & 1 deletion lib/src/ast/sass/argument.dart
Expand Up @@ -26,7 +26,7 @@ class Argument implements SassNode {
String get originalName =>
defaultValue == null ? span.text : declarationName(span);

Argument(this.name, {this.defaultValue, required this.span});
Argument(this.name, this.span, {this.defaultValue});

String toString() => defaultValue == null ? name : "$name: $defaultValue";
}
6 changes: 3 additions & 3 deletions lib/src/ast/sass/argument_declaration.dart
Expand Up @@ -52,12 +52,12 @@ class ArgumentDeclaration implements SassNode {
/// Returns whether this declaration takes no arguments.
bool get isEmpty => arguments.isEmpty && restArgument == null;

ArgumentDeclaration(Iterable<Argument> arguments,
{this.restArgument, required this.span})
ArgumentDeclaration(Iterable<Argument> arguments, this.span,
{this.restArgument})
: arguments = List.unmodifiable(arguments);

/// Creates a declaration that declares no arguments.
ArgumentDeclaration.empty({required this.span})
ArgumentDeclaration.empty(this.span)
: arguments = const [],
restArgument = null;

Expand Down
5 changes: 3 additions & 2 deletions lib/src/ast/sass/expression/list.dart
Expand Up @@ -23,8 +23,9 @@ class ListExpression implements Expression {

final FileSpan span;

ListExpression(Iterable<Expression> contents, ListSeparator separator,
{bool brackets = false, required FileSpan span})
ListExpression(
Iterable<Expression> contents, ListSeparator separator, FileSpan span,
{bool brackets = false})
: this._(List.unmodifiable(contents), separator, brackets, span);

ListExpression._(
Expand Down
50 changes: 26 additions & 24 deletions lib/src/parse/stylesheet.dart
Expand Up @@ -156,7 +156,7 @@ abstract class StylesheetParser extends Parser {
whitespace();
var arguments = scanner.peekChar() == $lparen
? _argumentDeclaration()
: ArgumentDeclaration.empty(span: scanner.emptySpan);
: ArgumentDeclaration.empty(scanner.emptySpan);
scanner.expectDone();
return Tuple2(name, arguments);
});
Expand Down Expand Up @@ -1202,8 +1202,8 @@ abstract class StylesheetParser extends Parser {

ContentBlock? content;
if (contentArguments != null || lookingAtChildren()) {
var contentArguments_ = contentArguments ??
ArgumentDeclaration.empty(span: scanner.emptySpan);
var contentArguments_ =
contentArguments ?? ArgumentDeclaration.empty(scanner.emptySpan);
var wasInContentBlock = _inContentBlock;
_inContentBlock = true;
content = _withChildren(_statement, start,
Expand Down Expand Up @@ -1239,7 +1239,7 @@ abstract class StylesheetParser extends Parser {
whitespace();
var arguments = scanner.peekChar() == $lparen
? _argumentDeclaration()
: ArgumentDeclaration.empty(span: scanner.emptySpan);
: ArgumentDeclaration.empty(scanner.emptySpan);

if (_inMixin || _inContentBlock) {
error("Mixins may not contain mixin declarations.",
Expand Down Expand Up @@ -1552,8 +1552,8 @@ abstract class StylesheetParser extends Parser {
break;
}

arguments.add(Argument(name,
span: scanner.spanFrom(variableStart), defaultValue: defaultValue));
arguments.add(Argument(name, scanner.spanFrom(variableStart),
defaultValue: defaultValue));
if (!named.add(name)) {
error("Duplicate argument.", arguments.last.span);
}
Expand All @@ -1562,8 +1562,8 @@ abstract class StylesheetParser extends Parser {
whitespace();
}
scanner.expectChar($rparen);
return ArgumentDeclaration(arguments,
restArgument: restArgument, span: scanner.spanFrom(start));
return ArgumentDeclaration(arguments, scanner.spanFrom(start),
restArgument: restArgument);
}

// ## Expressions
Expand Down Expand Up @@ -1642,8 +1642,9 @@ abstract class StylesheetParser extends Parser {
whitespace();

if (scanner.scanChar($rbracket)) {
return ListExpression([], ListSeparator.undecided,
brackets: true, span: scanner.spanFrom(beforeBracket));
return ListExpression(
[], ListSeparator.undecided, scanner.spanFrom(beforeBracket),
brackets: true);
}
}

Expand Down Expand Up @@ -1795,8 +1796,9 @@ abstract class StylesheetParser extends Parser {

spaceExpressions.add(singleExpression);
singleExpression_ = ListExpression(
spaceExpressions, ListSeparator.space,
span: spaceExpressions.first.span.expand(singleExpression.span));
spaceExpressions,
ListSeparator.space,
spaceExpressions.first.span.expand(singleExpression.span));
spaceExpressions_ = null;
}
}
Expand Down Expand Up @@ -2061,19 +2063,19 @@ abstract class StylesheetParser extends Parser {
var singleExpression = singleExpression_;
if (singleExpression != null) commaExpressions.add(singleExpression);
return ListExpression(commaExpressions, ListSeparator.comma,
brackets: bracketList,
span: scanner.spanFrom(beforeBracket ?? start));
scanner.spanFrom(beforeBracket ?? start),
brackets: bracketList);
} else if (bracketList && spaceExpressions != null) {
resolveOperations();
return ListExpression(
spaceExpressions..add(singleExpression_!), ListSeparator.space,
brackets: true, span: scanner.spanFrom(beforeBracket!));
return ListExpression(spaceExpressions..add(singleExpression_!),
ListSeparator.space, scanner.spanFrom(beforeBracket!),
brackets: true);
} else {
resolveSpaceExpressions();
if (bracketList) {
singleExpression_ = ListExpression(
[singleExpression_!], ListSeparator.undecided,
brackets: true, span: scanner.spanFrom(beforeBracket!));
singleExpression_ = ListExpression([singleExpression_!],
ListSeparator.undecided, scanner.spanFrom(beforeBracket!),
brackets: true);
}
return singleExpression_!;
}
Expand Down Expand Up @@ -2215,8 +2217,8 @@ abstract class StylesheetParser extends Parser {
whitespace();
if (!_lookingAtExpression()) {
scanner.expectChar($rparen);
return ListExpression([], ListSeparator.undecided,
span: scanner.spanFrom(start));
return ListExpression(
[], ListSeparator.undecided, scanner.spanFrom(start));
}

var first = _expressionUntilComma();
Expand All @@ -2240,8 +2242,8 @@ abstract class StylesheetParser extends Parser {
}

scanner.expectChar($rparen);
return ListExpression(expressions, ListSeparator.comma,
span: scanner.spanFrom(start));
return ListExpression(
expressions, ListSeparator.comma, scanner.spanFrom(start));
} finally {
_inParentheses = wasInParentheses;
}
Expand Down

0 comments on commit 268f22e

Please sign in to comment.