diff --git a/src/args.rs b/src/args.rs index 482634d..b24449a 100644 --- a/src/args.rs +++ b/src/args.rs @@ -60,7 +60,7 @@ impl CallArgs { self.0.get(&CallArg::Positional(val)) } - pub fn get_variadic(self) -> SassResult { + pub fn get_variadic(self) -> SassResult> { let mut vals = Vec::new(); let mut args = self .0 @@ -71,7 +71,7 @@ impl CallArgs { for arg in args { vals.push(arg.1); } - Ok(Value::ArgList(vals)) + Ok(vals) } pub fn len(&self) -> usize { diff --git a/src/atrule/function.rs b/src/atrule/function.rs index 82513e2..ba2f639 100644 --- a/src/atrule/function.rs +++ b/src/atrule/function.rs @@ -46,7 +46,8 @@ impl Function { pub fn args(mut self, mut args: CallArgs) -> SassResult { for (idx, arg) in self.args.0.iter().enumerate() { if arg.is_variadic { - self.scope.insert_var(&arg.name, args.get_variadic()?)?; + self.scope + .insert_var(&arg.name, Value::ArgList(args.get_variadic()?))?; break; } let val = match args.remove_positional(idx) { diff --git a/src/atrule/mixin.rs b/src/atrule/mixin.rs index 590134e..a80cc3b 100644 --- a/src/atrule/mixin.rs +++ b/src/atrule/mixin.rs @@ -11,6 +11,7 @@ use crate::selector::Selector; use crate::utils::{ devour_whitespace, devour_whitespace_or_comment, eat_ident, read_until_closing_curly_brace, }; +use crate::value::Value; use crate::{eat_expr, Expr, RuleSet, Stmt, Token}; #[derive(Debug, Clone)] @@ -62,7 +63,8 @@ impl Mixin { pub fn args(mut self, mut args: CallArgs) -> SassResult { for (idx, arg) in self.args.0.iter().enumerate() { if arg.is_variadic { - self.scope.insert_var(&arg.name, args.get_variadic()?)?; + self.scope + .insert_var(&arg.name, Value::ArgList(args.get_variadic()?))?; break; } let val = match args.remove_positional(idx) { diff --git a/src/builtin/color/hsl.rs b/src/builtin/color/hsl.rs index f916c6c..b5382c2 100644 --- a/src/builtin/color/hsl.rs +++ b/src/builtin/color/hsl.rs @@ -11,7 +11,7 @@ use crate::value::{Number, Value}; pub(crate) fn register(f: &mut HashMap) { f.insert( "hsl".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { if args.is_empty() { return Err("Missing argument $channels.".into()); } @@ -89,7 +89,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "hsla".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { if args.is_empty() { return Err("Missing argument $channels.".into()); } @@ -167,7 +167,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "hue".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "color") { Value::Color(c) => Ok(Value::Dimension(c.hue(), Unit::Deg)), @@ -177,7 +177,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "saturation".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "color") { Value::Color(c) => Ok(Value::Dimension(c.saturation(), Unit::Percent)), @@ -187,7 +187,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "lightness".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "color") { Value::Color(c) => Ok(Value::Dimension(c.lightness(), Unit::Percent)), @@ -197,7 +197,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "adjust-hue".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 2); let color = match arg!(args, 0, "color") { Value::Color(c) => c, @@ -212,7 +212,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "lighten".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 2); let color = match arg!(args, 0, "color") { Value::Color(c) => c, @@ -227,7 +227,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "darken".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 2); let color = match arg!(args, 0, "color") { Value::Color(c) => c, @@ -242,7 +242,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "saturate".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 2); if args.len() == 1 { return Ok(Value::Ident( @@ -270,7 +270,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "desaturate".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 2); let color = match arg!(args, 0, "color") { Value::Color(c) => c, @@ -285,7 +285,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "grayscale".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); let color = match arg!(args, 0, "color") { Value::Color(c) => c, @@ -302,7 +302,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "complement".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); let color = match arg!(args, 0, "color") { Value::Color(c) => c, @@ -313,7 +313,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "invert".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 2); let weight = match arg!( args, diff --git a/src/builtin/color/opacity.rs b/src/builtin/color/opacity.rs index 5d994ab..87fc49b 100644 --- a/src/builtin/color/opacity.rs +++ b/src/builtin/color/opacity.rs @@ -9,7 +9,7 @@ use crate::value::Value; pub(crate) fn register(f: &mut HashMap) { f.insert( "alpha".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "color") { Value::Color(c) => Ok(Value::Dimension(c.alpha(), Unit::None)), @@ -19,7 +19,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "opacity".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "color") { Value::Color(c) => Ok(Value::Dimension(c.alpha(), Unit::None)), @@ -33,7 +33,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "opacify".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 2); let color = match arg!(args, 0, "color") { Value::Color(c) => c, @@ -48,7 +48,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "fade-in".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 2); let color = match arg!(args, 0, "color") { Value::Color(c) => c, @@ -63,7 +63,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "transparentize".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 2); let color = match arg!(args, 0, "color") { Value::Color(c) => c, @@ -78,7 +78,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "fade-out".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 2); let color = match arg!(args, 0, "color") { Value::Color(c) => c, diff --git a/src/builtin/color/other.rs b/src/builtin/color/other.rs index 21c3c1c..45f376d 100644 --- a/src/builtin/color/other.rs +++ b/src/builtin/color/other.rs @@ -31,7 +31,7 @@ macro_rules! opt_hsl { } pub(crate) fn register(f: &mut HashMap) { - f.insert("change-color".to_owned(), Box::new(|args, _| { + f.insert("change-color".to_owned(), Box::new(|mut args, _| { if args.get_positional(1).is_some() { return Err("Only one positional argument is allowed. All other arguments must be passed by name.".into()); } @@ -73,7 +73,7 @@ pub(crate) fn register(f: &mut HashMap) { })); f.insert( "adjust-color".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { let color = match arg!(args, 0, "color") { Value::Color(c) => c, v => return Err(format!("$color: {} is not a color.", v).into()), @@ -123,7 +123,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "scale-color".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { let color = match arg!(args, 0, "color") { Value::Color(c) => c, v => return Err(format!("$color: {} is not a color.", v).into()), @@ -209,7 +209,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "ie-hex-str".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); let color = match arg!(args, 0, "color") { Value::Color(c) => c, diff --git a/src/builtin/color/rgb.rs b/src/builtin/color/rgb.rs index 46e1c38..d89dbdd 100644 --- a/src/builtin/color/rgb.rs +++ b/src/builtin/color/rgb.rs @@ -10,7 +10,7 @@ use crate::value::{Number, Value}; pub(crate) fn register(f: &mut HashMap) { f.insert( "rgb".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { if args.is_empty() { return Err("Missing argument $channels.".into()); } @@ -132,7 +132,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "rgba".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { if args.is_empty() { return Err("Missing argument $channels.".into()); } @@ -254,7 +254,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "red".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "color") { Value::Color(c) => Ok(Value::Dimension(c.red(), Unit::None)), @@ -264,7 +264,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "green".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "color") { Value::Color(c) => Ok(Value::Dimension(c.green(), Unit::None)), @@ -274,7 +274,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "blue".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "color") { Value::Color(c) => Ok(Value::Dimension(c.blue(), Unit::None)), @@ -284,7 +284,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "mix".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 3); let color1 = match arg!(args, 0, "color1") { Value::Color(c) => c, diff --git a/src/builtin/list.rs b/src/builtin/list.rs index 1019e31..635903b 100644 --- a/src/builtin/list.rs +++ b/src/builtin/list.rs @@ -10,7 +10,7 @@ use crate::value::{Number, Value}; pub(crate) fn register(f: &mut HashMap) { f.insert( "length".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); let len = match arg!(args, 0, "list") { Value::List(v, ..) => Number::from(v.len()), @@ -22,7 +22,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "nth".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 2); let list = match arg!(args, 0, "list") { Value::List(v, ..) => v, @@ -59,7 +59,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "list-separator".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); Ok(Value::Ident( match arg!(args, 0, "list") { @@ -73,7 +73,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "set-nth".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 3); let (mut list, sep) = match arg!(args, 0, "list") { Value::List(v, sep, ..) => (v, sep), @@ -113,7 +113,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "append".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 3); let (mut list, sep) = match arg!(args, 0, "list") { Value::List(v, sep, ..) => (v, sep), @@ -143,7 +143,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "join".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 3); let (mut list1, sep1, brackets) = match arg!(args, 0, "list") { Value::List(v, sep, brackets) => (v, sep, brackets), @@ -182,7 +182,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "is-bracketed".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); Ok(Value::bool(match arg!(args, 0, "list") { Value::List(.., brackets) => match brackets { diff --git a/src/builtin/map.rs b/src/builtin/map.rs index b155436..474b73a 100644 --- a/src/builtin/map.rs +++ b/src/builtin/map.rs @@ -7,7 +7,7 @@ use crate::value::{SassMap, Value}; pub(crate) fn register(f: &mut HashMap) { f.insert( "map-get".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 2); let key = arg!(args, 1, "key"); let map = match arg!(args, 0, "map") { @@ -20,7 +20,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "map-has-key".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 2); let key = arg!(args, 1, "key"); let map = match arg!(args, 0, "map") { @@ -33,7 +33,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "map-keys".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); let map = match arg!(args, 0, "map") { Value::Map(m) => m, @@ -49,7 +49,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "map-values".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); let map = match arg!(args, 0, "map") { Value::Map(m) => m, @@ -65,7 +65,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "map-merge".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 2); let mut map1 = match arg!(args, 0, "map1") { Value::Map(m) => m, diff --git a/src/builtin/math.rs b/src/builtin/math.rs index 8eec941..24612a0 100644 --- a/src/builtin/math.rs +++ b/src/builtin/math.rs @@ -7,7 +7,7 @@ use crate::value::{Number, Value}; pub(crate) fn register(f: &mut HashMap) { f.insert( "percentage".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); let num = match arg!(args, 0, "number") { Value::Dimension(n, Unit::None) => n * Number::from(100), @@ -21,7 +21,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "round".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "number") { Value::Dimension(n, u) => Ok(Value::Dimension(n.round(), u)), @@ -31,7 +31,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "ceil".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "number") { Value::Dimension(n, u) => Ok(Value::Dimension(n.ceil(), u)), @@ -41,7 +41,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "floor".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "number") { Value::Dimension(n, u) => Ok(Value::Dimension(n.floor(), u)), @@ -51,7 +51,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "abs".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "number") { Value::Dimension(n, u) => Ok(Value::Dimension(n.abs(), u)), @@ -61,7 +61,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "comparable".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 2); let unit1 = match arg!(args, 0, "number1") { Value::Dimension(_, u) => u, diff --git a/src/builtin/meta.rs b/src/builtin/meta.rs index 1e9033c..8adc3a3 100644 --- a/src/builtin/meta.rs +++ b/src/builtin/meta.rs @@ -9,7 +9,7 @@ use crate::value::Value; pub(crate) fn register(f: &mut HashMap) { f.insert( "if".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 3); if arg!(args, 0, "condition").is_true()? { Ok(arg!(args, 1, "if-true")) @@ -20,7 +20,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "feature-exists".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "feature") { Value::Ident(s, _) => match s.as_str() { @@ -47,7 +47,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "unit".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); let unit = match arg!(args, 0, "number") { Value::Dimension(_, u) => u.to_string(), @@ -58,7 +58,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "type-of".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); let value = arg!(args, 0, "value"); Ok(Value::Ident(value.kind()?.to_owned(), QuoteKind::None)) @@ -66,7 +66,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "unitless".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "number") { Value::Dimension(_, Unit::None) => Ok(Value::True), @@ -77,7 +77,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "inspect".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); Ok(Value::Ident( match arg!(args, 0, "value") { @@ -90,7 +90,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "variable-exists".to_owned(), - Box::new(|args, scope| { + Box::new(|mut args, scope| { max_args!(args, 1); match arg!(args, 0, "name") { Value::Ident(s, _) => Ok(Value::bool(scope.var_exists(&s))), @@ -100,7 +100,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "global-variable-exists".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "name") { Value::Ident(s, _) => Ok(Value::bool(global_var_exists(&s))), @@ -110,7 +110,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "mixin-exists".to_owned(), - Box::new(|args, scope| { + Box::new(|mut args, scope| { max_args!(args, 2); match arg!(args, 0, "name") { Value::Ident(s, _) => Ok(Value::bool(scope.mixin_exists(&s))), @@ -120,7 +120,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "function-exists".to_owned(), - Box::new(|args, scope| { + Box::new(|mut args, scope| { max_args!(args, 2); match arg!(args, 0, "name") { Value::Ident(s, _) => Ok(Value::bool( diff --git a/src/builtin/mod.rs b/src/builtin/mod.rs index 570c16f..3c0548d 100644 --- a/src/builtin/mod.rs +++ b/src/builtin/mod.rs @@ -17,7 +17,7 @@ mod meta; mod selector; mod string; -pub(crate) type Builtin = Box SassResult + Send + Sync>; +pub(crate) type Builtin = Box SassResult + Send + Sync>; pub(crate) static GLOBAL_FUNCTIONS: Lazy> = Lazy::new(|| { let mut m = HashMap::new(); diff --git a/src/builtin/string.rs b/src/builtin/string.rs index c0da316..b488b31 100644 --- a/src/builtin/string.rs +++ b/src/builtin/string.rs @@ -11,7 +11,7 @@ use crate::value::{Number, Value}; pub(crate) fn register(f: &mut HashMap) { f.insert( "to-upper-case".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "string") { Value::Ident(i, q) => Ok(Value::Ident(i.to_ascii_uppercase(), q)), @@ -21,7 +21,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "to-lower-case".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "string") { Value::Ident(i, q) => Ok(Value::Ident(i.to_ascii_lowercase(), q)), @@ -31,7 +31,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "str-length".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "string") { Value::Ident(i, _) => Ok(Value::Dimension( @@ -44,7 +44,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "quote".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "string") { Value::Ident(i, _) => Ok(Value::Ident(i, QuoteKind::Double)), @@ -54,7 +54,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "unquote".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 1); match arg!(args, 0, "string") { i @ Value::Ident(..) => Ok(i.unquote()), @@ -64,7 +64,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "str-slice".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 3); let (string, quotes) = match arg!(args, 0, "string") { Value::Ident(s, q) => (s, q), @@ -127,7 +127,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "str-index".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 2); let s1 = match arg!(args, 0, "string") { Value::Ident(i, _) => i, @@ -147,7 +147,7 @@ pub(crate) fn register(f: &mut HashMap) { ); f.insert( "str-insert".to_owned(), - Box::new(|args, _| { + Box::new(|mut args, _| { max_args!(args, 3); let (s1, quotes) = match arg!(args, 0, "string") { Value::Ident(i, q) => (i, q.normalize()), diff --git a/src/value/parse.rs b/src/value/parse.rs index bb754a1..c604dc8 100644 --- a/src/value/parse.rs +++ b/src/value/parse.rs @@ -367,7 +367,7 @@ impl Value { Err(_) => match GLOBAL_FUNCTIONS.get(&s) { Some(f) => { return Ok(IntermediateValue::Value(f( - &mut eat_call_args(toks, scope, super_selector)?, + eat_call_args(toks, scope, super_selector)?, scope, )?)) }