File tree Expand file tree Collapse file tree 7 files changed +120
-1
lines changed Expand file tree Collapse file tree 7 files changed +120
-1
lines changed Original file line number Diff line number Diff line change
1
+ {
2
+ "tbl-1" : {
3
+ "1" : {
4
+ "type" : " integer" ,
5
+ "value" : " 2"
6
+ },
7
+ "arr" : [
8
+ {
9
+ "type" : " integer" ,
10
+ "value" : " 1"
11
+ },
12
+ {
13
+ "type" : " integer" ,
14
+ "value" : " 2"
15
+ },
16
+ {
17
+ "type" : " integer" ,
18
+ "value" : " 3"
19
+ }
20
+ ],
21
+ "hello" : {
22
+ "type" : " string" ,
23
+ "value" : " world"
24
+ },
25
+ "tbl" : {
26
+ "k" : {
27
+ "type" : " integer" ,
28
+ "value" : " 1"
29
+ }
30
+ }
31
+ },
32
+ "tbl-2" : {
33
+ "k" : {
34
+ "type" : " string" ,
35
+ "value" : " \t Hello\n\t "
36
+ }
37
+ },
38
+ "trailing-comma-1" : {
39
+ "c" : {
40
+ "type" : " integer" ,
41
+ "value" : " 1"
42
+ }
43
+ },
44
+ "trailing-comma-2" : {
45
+ "c" : {
46
+ "type" : " integer" ,
47
+ "value" : " 1"
48
+ }
49
+ }
50
+ }
Original file line number Diff line number Diff line change
1
+ # TOML 1.1 supports newlines in inline tables and trailing commas.
2
+
3
+ trailing-comma-1 = {
4
+ c = 1 ,
5
+ }
6
+ trailing-comma-2 = { c = 1 , }
7
+
8
+ tbl-1 = {
9
+ hello = " world" ,
10
+ 1 = 2 ,
11
+ arr = [1 ,
12
+ 2 ,
13
+ 3 ,
14
+ ],
15
+ tbl = {
16
+ k = 1 ,
17
+ }
18
+ }
19
+
20
+ tbl-2 = {
21
+ k = """
22
+ Hello
23
+ """
24
+ }
Original file line number Diff line number Diff line change
1
+ {
2
+ "a" : {
3
+ "extend" : {
4
+ "key" : {
5
+ "type" : " integer" ,
6
+ "value" : " 2"
7
+ },
8
+ "more" : {
9
+ "key" : {
10
+ "type" : " integer" ,
11
+ "value" : " 3"
12
+ }
13
+ }
14
+ },
15
+ "key" : {
16
+ "type" : " integer" ,
17
+ "value" : " 1"
18
+ }
19
+ }
20
+ }
Original file line number Diff line number Diff line change
1
+ [a ]
2
+ key = 1
3
+
4
+ # a.extend is a key inside the "a" table.
5
+ [a .extend ]
6
+ key = 2
7
+
8
+ [a .extend .more ]
9
+ key = 3
Original file line number Diff line number Diff line change @@ -13,6 +13,11 @@ var versions = map[string]versionSpec{
13
13
exclude : []string {
14
14
"invalid/datetime/no-secs" , // Times without seconds is no longer invalid.
15
15
"invalid/string/basic-byte-escapes" , // \x is now valid.
16
+ "invalid/inline-table/trailing-comma" ,
17
+ "invalid/inline-table/linebreak-1" ,
18
+ "invalid/inline-table/linebreak-2" ,
19
+ "invalid/inline-table/linebreak-3" ,
20
+ "invalid/inline-table/linebreak-4" ,
16
21
},
17
22
},
18
23
@@ -21,6 +26,7 @@ var versions = map[string]versionSpec{
21
26
"valid/string/escape-esc" , // \e
22
27
"valid/string/hex-escape" , "invalid/string/bad-hex-esc" , // \x..
23
28
"valid/datetime/no-seconds" , // Times without seconds
29
+ "valid/inline-table/newline" ,
24
30
},
25
31
},
26
32
Original file line number Diff line number Diff line change @@ -618,6 +618,9 @@ func lexInlineTableValue(lx *lexer) stateFn {
618
618
case isWhitespace (r ):
619
619
return lexSkip (lx , lexInlineTableValue )
620
620
case isNL (r ):
621
+ if tomlNext {
622
+ return lexSkip (lx , lexInlineTableValue )
623
+ }
621
624
return lx .errorPrevLine (errLexInlineTableNL {})
622
625
case r == '#' :
623
626
lx .push (lexInlineTableValue )
@@ -640,6 +643,9 @@ func lexInlineTableValueEnd(lx *lexer) stateFn {
640
643
case isWhitespace (r ):
641
644
return lexSkip (lx , lexInlineTableValueEnd )
642
645
case isNL (r ):
646
+ if tomlNext {
647
+ return lexSkip (lx , lexInlineTableValueEnd )
648
+ }
643
649
return lx .errorPrevLine (errLexInlineTableNL {})
644
650
case r == '#' :
645
651
lx .push (lexInlineTableValueEnd )
@@ -648,6 +654,9 @@ func lexInlineTableValueEnd(lx *lexer) stateFn {
648
654
lx .ignore ()
649
655
lx .skip (isWhitespace )
650
656
if lx .peek () == '}' {
657
+ if tomlNext {
658
+ return lexInlineTableValueEnd
659
+ }
651
660
return lx .errorf ("trailing comma not allowed in inline tables" )
652
661
}
653
662
return lexInlineTableValue
Original file line number Diff line number Diff line change @@ -256,7 +256,8 @@ func TestTomlNextFails(t *testing.T) {
256
256
runTomlTest (t , true ,
257
257
"valid/string/escape-esc" ,
258
258
"valid/datetime/no-seconds" ,
259
- "valid/string/hex-escape" )
259
+ "valid/string/hex-escape" ,
260
+ "valid/inline-table/newline" )
260
261
}
261
262
262
263
func runTomlTest (t * testing.T , includeNext bool , wantFail ... string ) {
You can’t perform that action at this time.
0 commit comments