@@ -15,6 +15,7 @@ import '../exception.dart';
1515import '../interpolation_buffer.dart' ;
1616import '../util/character.dart' ;
1717import '../utils.dart' ;
18+ import '../util/multi_span.dart' ;
1819import '../util/nullable.dart' ;
1920import '../value.dart' ;
2021import 'parser.dart' ;
@@ -1832,6 +1833,7 @@ abstract class StylesheetParser extends Parser {
18321833 var named = < String , Expression > {};
18331834 Expression ? rest;
18341835 Expression ? keywordRest;
1836+ var emittedRestDeprecation = false ;
18351837 while (_lookingAtExpression ()) {
18361838 var expression = expressionUntilComma (singleEquals: ! mixin );
18371839 whitespace (consumeNewlines: true );
@@ -1842,6 +1844,19 @@ abstract class StylesheetParser extends Parser {
18421844 error ("Duplicate argument." , expression.span);
18431845 }
18441846 named[expression.name] = expressionUntilComma (singleEquals: ! mixin );
1847+
1848+ if (rest != null && ! emittedRestDeprecation) {
1849+ emittedRestDeprecation = true ;
1850+ warnings.add ((
1851+ deprecation: Deprecation .misplacedRest,
1852+ message: 'Named arguments must come before rest arguments.\n '
1853+ 'This will be an error in Dart Sass 2.0.0.' ,
1854+ span: MultiSpan (
1855+ scanner.spanFromPosition (expression.span.start.offset),
1856+ 'named argument' ,
1857+ {rest.span: 'rest argument' })
1858+ ));
1859+ }
18451860 } else if (scanner.scanChar ($dot)) {
18461861 scanner.expectChar ($dot);
18471862 scanner.expectChar ($dot);
@@ -1860,6 +1875,17 @@ abstract class StylesheetParser extends Parser {
18601875 );
18611876 } else {
18621877 positional.add (expression);
1878+
1879+ if (rest != null && ! emittedRestDeprecation) {
1880+ emittedRestDeprecation = true ;
1881+ warnings.add ((
1882+ deprecation: Deprecation .misplacedRest,
1883+ message: 'Positional arguments must come before rest arguments.\n '
1884+ 'This will be an error in Dart Sass 2.0.0.' ,
1885+ span: MultiSpan (expression.span, 'positional argument' ,
1886+ {rest.span: 'rest argument' })
1887+ ));
1888+ }
18631889 }
18641890
18651891 whitespace (consumeNewlines: true );
0 commit comments