() is treated as empty map
This commit is contained in:
parent
23f7301a25
commit
5e20f57ee0
@ -2,7 +2,7 @@ use std::collections::HashMap;
|
|||||||
|
|
||||||
use super::Builtin;
|
use super::Builtin;
|
||||||
use crate::common::{Brackets, ListSeparator};
|
use crate::common::{Brackets, ListSeparator};
|
||||||
use crate::value::Value;
|
use crate::value::{Value, SassMap};
|
||||||
|
|
||||||
pub(crate) fn register(f: &mut HashMap<String, Builtin>) {
|
pub(crate) fn register(f: &mut HashMap<String, Builtin>) {
|
||||||
f.insert(
|
f.insert(
|
||||||
@ -11,6 +11,7 @@ pub(crate) fn register(f: &mut HashMap<String, Builtin>) {
|
|||||||
max_args!(args, 2);
|
max_args!(args, 2);
|
||||||
let map = match arg!(args, 0, "map") {
|
let map = match arg!(args, 0, "map") {
|
||||||
Value::Map(m) => m,
|
Value::Map(m) => m,
|
||||||
|
Value::List(v, ..) if v.is_empty() => SassMap::new(),
|
||||||
v => return Err(format!("$map: {} is not a map.", v).into()),
|
v => return Err(format!("$map: {} is not a map.", v).into()),
|
||||||
};
|
};
|
||||||
let key = arg!(args, 1, "key");
|
let key = arg!(args, 1, "key");
|
||||||
@ -23,6 +24,7 @@ pub(crate) fn register(f: &mut HashMap<String, Builtin>) {
|
|||||||
max_args!(args, 2);
|
max_args!(args, 2);
|
||||||
let map = match arg!(args, 0, "map") {
|
let map = match arg!(args, 0, "map") {
|
||||||
Value::Map(m) => m,
|
Value::Map(m) => m,
|
||||||
|
Value::List(v, ..) if v.is_empty() => SassMap::new(),
|
||||||
v => return Err(format!("$map: {} is not a map.", v).into()),
|
v => return Err(format!("$map: {} is not a map.", v).into()),
|
||||||
};
|
};
|
||||||
let key = arg!(args, 1, "key");
|
let key = arg!(args, 1, "key");
|
||||||
@ -35,6 +37,7 @@ pub(crate) fn register(f: &mut HashMap<String, Builtin>) {
|
|||||||
max_args!(args, 1);
|
max_args!(args, 1);
|
||||||
let map = match arg!(args, 0, "map") {
|
let map = match arg!(args, 0, "map") {
|
||||||
Value::Map(m) => m,
|
Value::Map(m) => m,
|
||||||
|
Value::List(v, ..) if v.is_empty() => SassMap::new(),
|
||||||
v => return Err(format!("$map: {} is not a map.", v).into()),
|
v => return Err(format!("$map: {} is not a map.", v).into()),
|
||||||
};
|
};
|
||||||
Ok(Value::List(
|
Ok(Value::List(
|
||||||
@ -50,6 +53,7 @@ pub(crate) fn register(f: &mut HashMap<String, Builtin>) {
|
|||||||
max_args!(args, 1);
|
max_args!(args, 1);
|
||||||
let map = match arg!(args, 0, "map") {
|
let map = match arg!(args, 0, "map") {
|
||||||
Value::Map(m) => m,
|
Value::Map(m) => m,
|
||||||
|
Value::List(v, ..) if v.is_empty() => SassMap::new(),
|
||||||
v => return Err(format!("$map: {} is not a map.", v).into()),
|
v => return Err(format!("$map: {} is not a map.", v).into()),
|
||||||
};
|
};
|
||||||
Ok(Value::List(
|
Ok(Value::List(
|
||||||
@ -65,10 +69,12 @@ pub(crate) fn register(f: &mut HashMap<String, Builtin>) {
|
|||||||
max_args!(args, 2);
|
max_args!(args, 2);
|
||||||
let mut map1 = match arg!(args, 0, "map1") {
|
let mut map1 = match arg!(args, 0, "map1") {
|
||||||
Value::Map(m) => m,
|
Value::Map(m) => m,
|
||||||
|
Value::List(v, ..) if v.is_empty() => SassMap::new(),
|
||||||
v => return Err(format!("$map1: {} is not a map.", v).into()),
|
v => return Err(format!("$map1: {} is not a map.", v).into()),
|
||||||
};
|
};
|
||||||
let map2 = match arg!(args, 1, "map2") {
|
let map2 = match arg!(args, 1, "map2") {
|
||||||
Value::Map(m) => m,
|
Value::Map(m) => m,
|
||||||
|
Value::List(v, ..) if v.is_empty() => SassMap::new(),
|
||||||
v => return Err(format!("$map2: {} is not a map.", v).into()),
|
v => return Err(format!("$map2: {} is not a map.", v).into()),
|
||||||
};
|
};
|
||||||
map1.merge(map2);
|
map1.merge(map2);
|
||||||
|
@ -53,6 +53,11 @@ test!(
|
|||||||
"a {\n color: inspect(map-merge((a: b), (c: d)));\n}\n",
|
"a {\n color: inspect(map-merge((a: b), (c: d)));\n}\n",
|
||||||
"a {\n color: (a: b, c: d);\n}\n"
|
"a {\n color: (a: b, c: d);\n}\n"
|
||||||
);
|
);
|
||||||
|
test!(
|
||||||
|
map_merge_both_empty,
|
||||||
|
"a {\n color: inspect(map-merge((), ()));\n}\n",
|
||||||
|
"a {\n color: ();\n}\n"
|
||||||
|
);
|
||||||
error!(
|
error!(
|
||||||
map_merge_map1_non_map,
|
map_merge_map1_non_map,
|
||||||
"a {\n color: map-merge(foo, (a: b));\n}\n", "Error: $map1: foo is not a map."
|
"a {\n color: map-merge(foo, (a: b));\n}\n", "Error: $map1: foo is not a map."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user