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