@@ -453,9 +453,23 @@ SassColor _updateComponents(List<Value> arguments,
453
453
/// [max] should be 255 for RGB channels, 1 for the alpha channel, and 100
454
454
/// for saturation, lightness, whiteness, and blackness.
455
455
double ? getParam (String name, num max,
456
- {bool checkPercent = false , bool assertPercent = false }) {
456
+ {bool checkPercent = false ,
457
+ bool assertPercent = false ,
458
+ bool checkUnitless = false }) {
457
459
var number = keywords.remove (name)? .assertNumber (name);
458
460
if (number == null ) return null ;
461
+ if (! scale && checkUnitless) {
462
+ if (number.hasUnits) {
463
+ warn (
464
+ "\$ $name : Passing a number with unit ${number .unitString } is "
465
+ "deprecated.\n "
466
+ "\n "
467
+ "To preserve current behavior: ${number .unitSuggestion (name )}\n "
468
+ "\n "
469
+ "More info: https://sass-lang.com/d/function-units" ,
470
+ deprecation: true );
471
+ }
472
+ }
459
473
if (! scale && checkPercent) _checkPercent (number, name);
460
474
if (scale || assertPercent) number.assertUnit ("%" , name);
461
475
if (scale) max = 100 ;
@@ -465,7 +479,7 @@ SassColor _updateComponents(List<Value> arguments,
465
479
change ? 0 : - max, max, name, checkPercent ? '%' : '' );
466
480
}
467
481
468
- var alpha = getParam ("alpha" , 1 );
482
+ var alpha = getParam ("alpha" , 1 , checkUnitless : true );
469
483
var red = getParam ("red" , 255 );
470
484
var green = getParam ("green" , 255 );
471
485
var blue = getParam ("blue" , 255 );
@@ -656,12 +670,13 @@ void _checkAngle(SassNumber angle, String name) {
656
670
657
671
var actualUnit = angle.numeratorUnits.first;
658
672
message
659
- ..writeln ("To preserve current behavior: \$ $name * 1deg/1$actualUnit " )
673
+ ..writeln (
674
+ "To preserve current behavior: calc(\$ $name * 1deg/1$actualUnit )" )
660
675
..writeln ("To migrate to new behavior: 0deg + \$ $name " )
661
676
..writeln ();
662
677
} else {
663
678
message
664
- ..writeln ("To preserve current behavior: \$ $ name ${ _removeUnits ( angle )}" )
679
+ ..writeln ("To preserve current behavior: ${ angle . unitSuggestion ( name )}" )
665
680
..writeln ();
666
681
}
667
682
@@ -676,18 +691,12 @@ void _checkPercent(SassNumber number, String name) {
676
691
warn (
677
692
"\$ $name : Passing a number without unit % ($number ) is deprecated.\n "
678
693
"\n "
679
- "To preserve current behavior: \$ $name ${_removeUnits (number )} * 1%" ,
694
+ "To preserve current behavior: ${number .unitSuggestion (name , '%' )}\n "
695
+ "\n "
696
+ "More info: https://sass-lang.com/d/function-units" ,
680
697
deprecation: true );
681
698
}
682
699
683
- /// Returns the right-hand side of an expression that would remove all units
684
- /// from `$number` but leaves the value the same.
685
- ///
686
- /// Used for constructing deprecation messages.
687
- String _removeUnits (SassNumber number) =>
688
- number.denominatorUnits.map ((unit) => " * 1$unit " ).join () +
689
- number.numeratorUnits.map ((unit) => " / 1$unit " ).join ();
690
-
691
700
/// Create an HWB color from the given [arguments] .
692
701
Value _hwb (List <Value > arguments) {
693
702
var alpha = arguments.length > 3 ? arguments[3 ] : null ;
@@ -805,6 +814,8 @@ double _percentageOrUnitless(SassNumber number, num max, String name) {
805
814
806
815
/// Returns [color1] and [color2] , mixed together and weighted by [weight] .
807
816
SassColor _mixColors (SassColor color1, SassColor color2, SassNumber weight) {
817
+ _checkPercent (weight, 'weight' );
818
+
808
819
// This algorithm factors in both the user-provided weight (w) and the
809
820
// difference between the alpha values of the two colors (a) to decide how
810
821
// to perform the weighted average of the two RGB values.
0 commit comments