deny non-numeric argument passed to unitless
This commit is contained in:
parent
253bc3b35f
commit
c35fa2b8eb
@ -7,6 +7,7 @@ use crate::{
|
|||||||
common::{Identifier, QuoteKind},
|
common::{Identifier, QuoteKind},
|
||||||
error::SassResult,
|
error::SassResult,
|
||||||
parse::Parser,
|
parse::Parser,
|
||||||
|
unit::Unit,
|
||||||
value::{SassFunction, Value},
|
value::{SassFunction, Value},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -72,7 +73,17 @@ pub(crate) fn type_of(mut args: CallArgs, parser: &mut Parser<'_>) -> SassResult
|
|||||||
|
|
||||||
pub(crate) fn unitless(mut args: CallArgs, parser: &mut Parser<'_>) -> SassResult<Value> {
|
pub(crate) fn unitless(mut args: CallArgs, parser: &mut Parser<'_>) -> SassResult<Value> {
|
||||||
args.max_args(1)?;
|
args.max_args(1)?;
|
||||||
Ok(Value::bool(args.get_err(0, "number")?.unitless()))
|
Ok(match args.get_err(0, "number")? {
|
||||||
|
Value::Dimension(_, Unit::None, _) => Value::True,
|
||||||
|
Value::Dimension(..) => Value::False,
|
||||||
|
v => {
|
||||||
|
return Err((
|
||||||
|
format!("$number: {} is not a number.", v.inspect(args.span())?),
|
||||||
|
args.span(),
|
||||||
|
)
|
||||||
|
.into())
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn inspect(mut args: CallArgs, parser: &mut Parser<'_>) -> SassResult<Value> {
|
pub(crate) fn inspect(mut args: CallArgs, parser: &mut Parser<'_>) -> SassResult<Value> {
|
||||||
|
@ -380,15 +380,6 @@ impl Value {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn unitless(&self) -> bool {
|
|
||||||
#[allow(clippy::match_same_arms)]
|
|
||||||
match self {
|
|
||||||
Value::Dimension(_, Unit::None, _) => true,
|
|
||||||
Value::Dimension(..) => false,
|
|
||||||
_ => true,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn not_equals(&self, other: &Self) -> bool {
|
pub fn not_equals(&self, other: &Self) -> bool {
|
||||||
match self {
|
match self {
|
||||||
Value::String(s1, ..) => match other {
|
Value::String(s1, ..) => match other {
|
||||||
|
@ -213,10 +213,9 @@ test!(
|
|||||||
"a {\n color: unitless(1)\n}\n",
|
"a {\n color: unitless(1)\n}\n",
|
||||||
"a {\n color: true;\n}\n"
|
"a {\n color: true;\n}\n"
|
||||||
);
|
);
|
||||||
test!(
|
error!(
|
||||||
unitless_string,
|
unitless_string,
|
||||||
"a {\n color: unitless(foo)\n}\n",
|
"a {\n color: unitless(foo)\n}\n", "Error: $number: foo is not a number."
|
||||||
"a {\n color: true;\n}\n"
|
|
||||||
);
|
);
|
||||||
test!(
|
test!(
|
||||||
variable_does_exist,
|
variable_does_exist,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user