@@ -167,16 +167,22 @@ pub fn parseInlineTable(ctx: *parser.Context) !?*Table {
167167 errdefer deinitTableRecursively (table );
168168
169169 while (true ) {
170- spaces .skipSpaces (ctx );
170+ spaces .skipSpacesAndLineBreaks (ctx );
171171 var pair = try kv .parse (ctx );
172172 errdefer pair .deinit (ctx .alloc );
173173
174174 try handleKeyPair (ctx , table , & pair );
175- spaces .skipSpaces (ctx );
175+ spaces .skipSpacesAndLineBreaks (ctx );
176176 parser .consumeString (ctx , "," ) catch {
177177 try parser .consumeString (ctx , "}" );
178178 break ;
179179 };
180+
181+ spaces .skipSpacesAndLineBreaks (ctx );
182+ parser .consumeString (ctx , "}" ) catch {
183+ continue ;
184+ };
185+ break ;
180186 }
181187
182188 return table ;
@@ -215,6 +221,21 @@ test "inline table" {
215221 testing .allocator .destroy (m );
216222}
217223
224+ test "multi-line inline table" {
225+ var ctx = parser .testInput (
226+ \\{
227+ \\ aa = 3,
228+ \\ bb.cc = 4,
229+ \\}
230+ );
231+ var m = (try parseInlineTable (& ctx )).? ;
232+ try testing .expect (m .count () == 2 );
233+ try testing .expect (m .get ("aa" ).? .integer == 3 );
234+ try testing .expect (m .get ("bb" ).? .table .get ("cc" ).? .integer == 4 );
235+ deinitTableRecursively (m );
236+ testing .allocator .destroy (m );
237+ }
238+
218239test "error in table" {
219240 var ctx = parser .testInput (
220241 \\aa = "test"
0 commit comments