| ... | @@ -1268,25 +1268,51 @@ fn renderExpression( | ... | @@ -1268,25 +1268,51 @@ fn renderExpression( |
| 1268 | } | 1268 | } |
| 1269 | | 1269 | |
| 1270 | try renderToken(tree, stream, err_set_decl.error_token, indent, start_col, Space.None); // error | 1270 | try renderToken(tree, stream, err_set_decl.error_token, indent, start_col, Space.None); // error |
| 1271 | try renderToken(tree, stream, lbrace, indent, start_col, Space.Newline); // { | | |
| 1272 | const new_indent = indent + indent_delta; | | |
| 1273 | | 1271 | |
| 1274 | var it = err_set_decl.decls.iterator(0); | 1272 | const src_has_trailing_comma = blk: { |
| 1275 | while (it.next()) |node| { | 1273 | const maybe_comma = tree.prevToken(err_set_decl.rbrace_token); |
| 1276 | try stream.writeByteNTimes(' ', new_indent); | 1274 | break :blk tree.tokens.at(maybe_comma).id == .Comma; |
| | 1275 | }; |
| 1277 | | 1276 | |
| 1278 | if (it.peek()) |next_node| { | 1277 | if (src_has_trailing_comma) { |
| 1279 | try renderExpression(allocator, stream, tree, new_indent, start_col, node.*, Space.None); | 1278 | try renderToken(tree, stream, lbrace, indent, start_col, Space.Newline); // { |
| 1280 | try renderToken(tree, stream, tree.nextToken(node.*.lastToken()), new_indent, start_col, Space.Newline); // , | 1279 | const new_indent = indent + indent_delta; |
| 1281 | | 1280 | |
| 1282 | try renderExtraNewline(tree, stream, start_col, next_node.*); | 1281 | var it = err_set_decl.decls.iterator(0); |
| 1283 | } else { | 1282 | while (it.next()) |node| { |
| 1284 | try renderExpression(allocator, stream, tree, new_indent, start_col, node.*, Space.Comma); | 1283 | try stream.writeByteNTimes(' ', new_indent); |
| | 1284 | |
| | 1285 | if (it.peek()) |next_node| { |
| | 1286 | try renderExpression(allocator, stream, tree, new_indent, start_col, node.*, Space.None); |
| | 1287 | try renderToken(tree, stream, tree.nextToken(node.*.lastToken()), new_indent, start_col, Space.Newline); // , |
| | 1288 | |
| | 1289 | try renderExtraNewline(tree, stream, start_col, next_node.*); |
| | 1290 | } else { |
| | 1291 | try renderExpression(allocator, stream, tree, new_indent, start_col, node.*, Space.Comma); |
| | 1292 | } |
| 1285 | } | 1293 | } |
| 1286 | } | | |
| 1287 | | 1294 | |
| 1288 | try stream.writeByteNTimes(' ', indent); | 1295 | try stream.writeByteNTimes(' ', indent); |
| 1289 | return renderToken(tree, stream, err_set_decl.rbrace_token, indent, start_col, space); // } | 1296 | return renderToken(tree, stream, err_set_decl.rbrace_token, indent, start_col, space); // } |
| | 1297 | } else { |
| | 1298 | try renderToken(tree, stream, lbrace, indent, start_col, Space.Space); // { |
| | 1299 | |
| | 1300 | var it = err_set_decl.decls.iterator(0); |
| | 1301 | while (it.next()) |node| { |
| | 1302 | if (it.peek()) |next_node| { |
| | 1303 | try renderExpression(allocator, stream, tree, indent, start_col, node.*, Space.None); |
| | 1304 | |
| | 1305 | const comma_token = tree.nextToken(node.*.lastToken()); |
| | 1306 | assert(tree.tokens.at(comma_token).id == .Comma); |
| | 1307 | try renderToken(tree, stream, comma_token, indent, start_col, Space.Space); // , |
| | 1308 | try renderExtraNewline(tree, stream, start_col, next_node.*); |
| | 1309 | } else { |
| | 1310 | try renderExpression(allocator, stream, tree, indent, start_col, node.*, Space.Space); |
| | 1311 | } |
| | 1312 | } |
| | 1313 | |
| | 1314 | return renderToken(tree, stream, err_set_decl.rbrace_token, indent, start_col, space); // } |
| | 1315 | } |
| 1290 | }, | 1316 | }, |
| 1291 | | 1317 | |
| 1292 | .ErrorTag => { | 1318 | .ErrorTag => { |
| ... | @@ -1589,8 +1615,7 @@ fn renderExpression( | ... | @@ -1589,8 +1615,7 @@ fn renderExpression( |
| 1589 | } | 1615 | } |
| 1590 | } else { | 1616 | } else { |
| 1591 | var it = switch_case.items.iterator(0); | 1617 | var it = switch_case.items.iterator(0); |
| 1592 | while (true) { | 1618 | while (it.next()) |node| { |
| 1593 | const node = it.next().?; | | |
| 1594 | if (it.peek()) |next_node| { | 1619 | if (it.peek()) |next_node| { |
| 1595 | try renderExpression(allocator, stream, tree, indent, start_col, node.*, Space.None); | 1620 | try renderExpression(allocator, stream, tree, indent, start_col, node.*, Space.None); |
| 1596 | | 1621 | |
| ... | @@ -1601,7 +1626,6 @@ fn renderExpression( | ... | @@ -1601,7 +1626,6 @@ fn renderExpression( |
| 1601 | } else { | 1626 | } else { |
| 1602 | try renderExpression(allocator, stream, tree, indent, start_col, node.*, Space.Comma); | 1627 | try renderExpression(allocator, stream, tree, indent, start_col, node.*, Space.Comma); |
| 1603 | try stream.writeByteNTimes(' ', indent); | 1628 | try stream.writeByteNTimes(' ', indent); |
| 1604 | break; | | |
| 1605 | } | 1629 | } |
| 1606 | } | 1630 | } |
| 1607 | } | 1631 | } |