Fix multiline array
diff --git a/src/toml/lexer.go b/src/toml/lexer.go index 0690c28..586263b 100644 --- a/src/toml/lexer.go +++ b/src/toml/lexer.go
@@ -76,6 +76,7 @@ pos int width int tokens chan token + depth int } func (l *lexer) run() { @@ -177,8 +178,10 @@ next := l.peek() switch next { case '[': + l.depth += 1 return lexLeftBracket case ']': + l.depth -= 1 return lexRightBracket case '#': return lexComment @@ -189,8 +192,11 @@ case '\n': l.ignore() l.pos += 1 - /*l.emit(tokenEOF)*/ - return lexVoid + if l.depth == 0 { + return lexVoid + } else { + return lexRvalue + } } if l.follow("true") {
diff --git a/src/toml/parser_test.go b/src/toml/parser_test.go index e3dcf1c..fd271ce 100644 --- a/src/toml/parser_test.go +++ b/src/toml/parser_test.go
@@ -88,6 +88,13 @@ }) } +func TestArrayMultiline(t *testing.T) { + tree := Load("a = [42,\n21, 10,]") + assertTree(t, tree, map[string]interface{}{ + "a": []int64{int64(42), int64(21), int64(10)}, + }) +} + func TestArrayNested(t *testing.T) { tree := Load("a = [[42, 21], [10]]") assertTree(t, tree, map[string]interface{}{