diff --git a/CHANGELOG.md b/CHANGELOG.md index 446755ebb..148981c22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 1.62.0 + +* Deprecate the use of multiple `!global` or `!default` flags on the same + variable. This deprecation is named `duplicate-var-flags`. + ## 1.61.0 * **Potentially breaking change:** Drop support for End-of-Life Node.js 12. diff --git a/lib/src/deprecation.dart b/lib/src/deprecation.dart index 25526c510..0d913424e 100644 --- a/lib/src/deprecation.dart +++ b/lib/src/deprecation.dart @@ -54,6 +54,11 @@ enum Deprecation { deprecatedIn: '1.56.0', description: 'Passing invalid units to built-in functions.'), + duplicateVariableFlags('duplicate-var-flags', + deprecatedIn: '1.62.0', + description: + 'Using !default or !global multiple times for one variable.'), + /// Deprecation for `@import` rules. import.future('import', description: '@import rules.'), diff --git a/lib/src/parse/stylesheet.dart b/lib/src/parse/stylesheet.dart index 1ee59febe..0a4286687 100644 --- a/lib/src/parse/stylesheet.dart +++ b/lib/src/parse/stylesheet.dart @@ -230,11 +230,25 @@ abstract class StylesheetParser extends Parser { while (scanner.scanChar($exclamation)) { var flag = identifier(); if (flag == 'default') { + if (guarded) { + logger.warnForDeprecation( + Deprecation.duplicateVariableFlags, + '!default should only be written once for each variable.\n' + 'This will be an error in Dart Sass 2.0.0.', + span: scanner.spanFrom(flagStart)); + } + guarded = true; } else if (flag == 'global') { if (namespace != null) { error("!global isn't allowed for variables in other modules.", scanner.spanFrom(flagStart)); + } else if (global) { + logger.warnForDeprecation( + Deprecation.duplicateVariableFlags, + '!global should only be written once for each variable.\n' + 'This will be an error in Dart Sass 2.0.0.', + span: scanner.spanFrom(flagStart)); } global = true; diff --git a/pkg/sass_api/CHANGELOG.md b/pkg/sass_api/CHANGELOG.md index e251836b1..4241db909 100644 --- a/pkg/sass_api/CHANGELOG.md +++ b/pkg/sass_api/CHANGELOG.md @@ -1,3 +1,7 @@ +## 6.3.0 + +* No user-visible changes. + ## 6.2.0 * No user-visible changes. diff --git a/pkg/sass_api/pubspec.yaml b/pkg/sass_api/pubspec.yaml index a85600509..b6082240d 100644 --- a/pkg/sass_api/pubspec.yaml +++ b/pkg/sass_api/pubspec.yaml @@ -2,7 +2,7 @@ name: sass_api # Note: Every time we add a new Sass AST node, we need to bump the *major* # version because it's a breaking change for anyone who's implementing the # visitor interface(s). -version: 6.2.0 +version: 6.3.0-dev description: Additional APIs for Dart Sass. homepage: https://github.com/sass/dart-sass @@ -10,7 +10,7 @@ environment: sdk: ">=2.17.0 <3.0.0" dependencies: - sass: 1.61.0 + sass: 1.62.0 dev_dependencies: dartdoc: ^5.0.0 diff --git a/pubspec.yaml b/pubspec.yaml index 1e967c589..6e7f0d71e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: sass -version: 1.61.0 +version: 1.62.0-dev description: A Sass implementation in Dart. homepage: https://github.com/sass/dart-sass