Fix opening brace in string literal w/SkipRecursive.

This commit is contained in:
Victor Starodub
2016-04-02 19:39:25 +03:00
parent 41cf62ebbc
commit fd33451b04
2 changed files with 13 additions and 4 deletions
+1 -1
View File
@@ -482,7 +482,7 @@ func (r *Lexer) SkipRecursive() {
for i, c := range r.Data[r.pos:] {
switch {
case c == start:
case c == start && !inQuotes:
level++
case c == end && !inQuotes:
level--
+12 -3
View File
@@ -112,13 +112,22 @@ func TestSkipRecursive(t *testing.T) {
}{
{toParse: "5, 4", left: ", 4"},
{toParse: "[5, 6], 4", left: ", 4"},
{toParse: "[5, [7,8]]: 4", left: ": 4"},
{toParse: `{"a":1}, 4`, left: ", 4"},
{toParse: `{"a":1, "b":{"c": 5}, "e":[12,15]}, 4`, left: ", 4"},
// array start/end chars in a string
{toParse: `[5, "]"], 4`, left: ", 4"},
{toParse: `[5, "\"]"], 4`, left: ", 4"},
{toParse: "[5, [7,8]]: 4", left: ": 4"},
{toParse: `{"a":1}, 4`, left: ", 4"},
{toParse: `[5, "["], 4`, left: ", 4"},
{toParse: `[5, "\"["], 4`, left: ", 4"},
// object start/end chars in a string
{toParse: `{"a}":1}, 4`, left: ", 4"},
{toParse: `{"a\"}":1}, 4`, left: ", 4"},
{toParse: `{"a":1, "b":{"c": 5}, "e":[12,15]}, 4`, left: ", 4"},
{toParse: `{"a{":1}, 4`, left: ", 4"},
{toParse: `{"a\"{":1}, 4`, left: ", 4"},
} {
l := Lexer{Data: []byte(test.toParse)}