From 2836216ba59ede71f62a607293e3c3320e0c3728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=AA=E3=81=A4=E3=81=8D?= Date: Fri, 21 Jul 2023 15:08:08 -0700 Subject: [PATCH] Fix deprotofy SassCalculation.clamp (#2043) --- CHANGELOG.md | 7 +++++++ lib/src/embedded/protofier.dart | 12 ++++++++---- pkg/sass_api/pubspec.yaml | 2 +- pubspec.yaml | 2 +- test/embedded/function_test.dart | 12 +++--------- 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ddedb98f..6e74c00ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## 1.64.1 + +### Embedded Sass + +* Fix a bug where a valid `SassCalculation.clamp()` with less than 3 arguments + would throw an error. + ## 1.64.0 * Comments that appear before or between `@use` and `@forward` rules are now diff --git a/lib/src/embedded/protofier.dart b/lib/src/embedded/protofier.dart index 9096c8b9b..3f7c499a1 100644 --- a/lib/src/embedded/protofier.dart +++ b/lib/src/embedded/protofier.dart @@ -350,16 +350,20 @@ class Protofier { return SassCalculation.calc( _deprotofyCalculationValue(calculation.arguments[0])); } else if (calculation.name == "clamp") { - if (calculation.arguments.length != 3) { + if (calculation.arguments.isEmpty || calculation.arguments.length > 3) { throw paramsError( - "Value.Calculation.arguments must have exactly 3 arguments for " + "Value.Calculation.arguments must have 1 to 3 arguments for " "clamp()."); } return SassCalculation.clamp( _deprotofyCalculationValue(calculation.arguments[0]), - _deprotofyCalculationValue(calculation.arguments[1]), - _deprotofyCalculationValue(calculation.arguments[2])); + calculation.arguments.length > 1 + ? _deprotofyCalculationValue(calculation.arguments[1]) + : null, + calculation.arguments.length > 2 + ? _deprotofyCalculationValue(calculation.arguments[2]) + : null); } else if (calculation.name == "min") { if (calculation.arguments.isEmpty) { throw paramsError( diff --git a/pkg/sass_api/pubspec.yaml b/pkg/sass_api/pubspec.yaml index fdbdd5c25..fad538aad 100644 --- a/pkg/sass_api/pubspec.yaml +++ b/pkg/sass_api/pubspec.yaml @@ -10,7 +10,7 @@ environment: sdk: ">=3.0.0 <4.0.0" dependencies: - sass: 1.64.0 + sass: 1.64.1 dev_dependencies: dartdoc: ^5.0.0 diff --git a/pubspec.yaml b/pubspec.yaml index d386e6beb..9cb551b01 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: sass -version: 1.64.0 +version: 1.64.1 description: A Sass implementation in Dart. homepage: https://github.com/sass/dart-sass diff --git a/test/embedded/function_test.dart b/test/embedded/function_test.dart index a8cb01512..af4bd62db 100644 --- a/test/embedded/function_test.dart +++ b/test/embedded/function_test.dart @@ -1699,7 +1699,7 @@ void main() { ..number = (Value_Number()..value = 3.0)) ..arguments.add(Value_Calculation_CalculationValue() ..number = (Value_Number()..value = 4.0))), - equals("Value.Calculation.arguments must have exactly 3 " + equals("Value.Calculation.arguments must have 1 to 3 " "arguments for clamp().")); }); }); @@ -1714,14 +1714,8 @@ void main() { test("for clamp", () async { await _expectDeprotofyError( - Value() - ..calculation = (Value_Calculation() - ..name = "clamp" - ..arguments.add(Value_Calculation_CalculationValue() - ..number = (Value_Number()..value = 1.0)) - ..arguments.add(Value_Calculation_CalculationValue() - ..number = (Value_Number()..value = 2.0))), - equals("Value.Calculation.arguments must have exactly 3 " + Value()..calculation = (Value_Calculation()..name = "clamp"), + equals("Value.Calculation.arguments must have 1 to 3 " "arguments for clamp().")); });