Allow empty maps; Write tests
This commit is contained in:
parent
bd6ca6a6c1
commit
df5cf93e58
@ -45,6 +45,11 @@ fn list() {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn empty_list() {
|
||||
assert_eq!(interpret("[]"), Ok(Value::List(List::new())));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn map() {
|
||||
let map = Map::new();
|
||||
@ -56,6 +61,11 @@ fn map() {
|
||||
assert_eq!(interpret("{ x = 1, foo = 'bar' }"), Ok(Value::Map(map)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn empty_map() {
|
||||
assert_eq!(interpret("{}"), Ok(Value::Map(Map::new())));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn map_types() {
|
||||
let map = Map::new();
|
||||
@ -119,7 +129,5 @@ fn option() {
|
||||
|
||||
#[test]
|
||||
fn range() {
|
||||
let result = interpret("0..100");
|
||||
|
||||
assert_eq!(Ok(Value::range(0, 100)), result);
|
||||
assert_eq!(interpret("0..100"), Ok(Value::range(0, 100)));
|
||||
}
|
||||
|
@ -263,20 +263,23 @@ module.exports = grammar({
|
||||
),
|
||||
|
||||
map: $ =>
|
||||
seq(
|
||||
'{',
|
||||
repeat1(
|
||||
seq(
|
||||
$.identifier,
|
||||
optional(
|
||||
$.type_specification,
|
||||
prec(
|
||||
1,
|
||||
seq(
|
||||
'{',
|
||||
repeat(
|
||||
seq(
|
||||
$.identifier,
|
||||
optional(
|
||||
$.type_specification,
|
||||
),
|
||||
'=',
|
||||
$.statement,
|
||||
optional(','),
|
||||
),
|
||||
'=',
|
||||
$.statement,
|
||||
optional(','),
|
||||
),
|
||||
'}',
|
||||
),
|
||||
'}',
|
||||
),
|
||||
|
||||
option: $ =>
|
||||
|
@ -769,61 +769,65 @@
|
||||
]
|
||||
},
|
||||
"map": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "{"
|
||||
},
|
||||
{
|
||||
"type": "REPEAT1",
|
||||
"content": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "identifier"
|
||||
},
|
||||
{
|
||||
"type": "CHOICE",
|
||||
"members": [
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "type_specification"
|
||||
},
|
||||
{
|
||||
"type": "BLANK"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "="
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "statement"
|
||||
},
|
||||
{
|
||||
"type": "CHOICE",
|
||||
"members": [
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": ","
|
||||
},
|
||||
{
|
||||
"type": "BLANK"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
"type": "PREC",
|
||||
"value": 1,
|
||||
"content": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "{"
|
||||
},
|
||||
{
|
||||
"type": "REPEAT",
|
||||
"content": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "identifier"
|
||||
},
|
||||
{
|
||||
"type": "CHOICE",
|
||||
"members": [
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "type_specification"
|
||||
},
|
||||
{
|
||||
"type": "BLANK"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "="
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "statement"
|
||||
},
|
||||
{
|
||||
"type": "CHOICE",
|
||||
"members": [
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": ","
|
||||
},
|
||||
{
|
||||
"type": "BLANK"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "}"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"option": {
|
||||
"type": "CHOICE",
|
||||
|
@ -413,7 +413,7 @@
|
||||
"fields": {},
|
||||
"children": {
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "identifier",
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user