refactor: restructure list/map compilation loops and extract syntax error tests

- Convert list() and map() compiler functions from if/do-while to do-while loops
- Remove redundant empty literal handling by breaking on right bracket/brace
- Add new test files for duplicate comma, duplicate trailing comma, and empty list/map with comma
- Expand newlines test to cover trailing comma and empty list/map cases
- Simplify trailing_comma tests by removing inline syntax error checks
- Update Test.fail() to handle variable arguments without kwargs
This commit is contained in:
Bob Nystrom
2015-08-31 14:23:36 +00:00
parent d608a03244
commit 075f487b6e
12 changed files with 82 additions and 51 deletions
+27
View File
@@ -0,0 +1,27 @@
// Allow after '{', ':', and ',', and before ']'.
var map = {
"a":
"a value",
"b": "b value"
}
IO.print(map["a"]) // expect: a value
IO.print(map["b"]) // expect: b value
// Newline after trailing comma.
map = {"c": "c value",
}
IO.print(map["c"]) // expect: c value
// Newline in empty map.
map = {
}
IO.print(map.count) // expect: 0