diff --git a/src/builtin/list.rs b/src/builtin/list.rs index 6d148b6..eba69ed 100644 --- a/src/builtin/list.rs +++ b/src/builtin/list.rs @@ -115,9 +115,9 @@ pub(crate) fn register(f: &mut HashMap) { "append".to_owned(), Box::new(|mut args, _| { max_args!(args, 3); - let (mut list, sep) = match arg!(args, 0, "list") { - Value::List(v, sep, ..) => (v, sep), - v => (vec![v], ListSeparator::Space), + let (mut list, sep, brackets) = match arg!(args, 0, "list") { + Value::List(v, sep, b) => (v, sep, b), + v => (vec![v], ListSeparator::Space, Brackets::None), }; let val = arg!(args, 1, "val"); let sep = match arg!( @@ -133,12 +133,12 @@ pub(crate) fn register(f: &mut HashMap) { return Err("$separator: Must be \"space\", \"comma\", or \"auto\".".into()) } }, - _ => return Err("$separator: Must be \"space\", \"comma\", or \"auto\".".into()), + v => return Err(format!("$separator: {} is not a string.", v).into()), }; list.push(val); - Ok(Value::List(list, sep, Brackets::None)) + Ok(Value::List(list, sep, brackets)) }), ); f.insert( diff --git a/tests/list.rs b/tests/list.rs index 4300b17..ba4d591 100644 --- a/tests/list.rs +++ b/tests/list.rs @@ -113,6 +113,15 @@ test!( "a {\n color: append((), a);\n}\n", "a {\n color: a;\n}\n" ); +test!( + append_bracketed, + "a {\n color: append([], 1);\n}\n", + "a {\n color: [1];\n}\n" +); +error!( + append_non_string_separator, + "a {b: append(c, d, $separator: 1);}", "Error: $separator: 1 is not a string." +); test!( join_space_separated, "a {\n color: join(a b, c d);\n}\n",