| ... | @@ -427,9 +427,23 @@ fn renderExpression( | ... | @@ -427,9 +427,23 @@ fn renderExpression( |
| 427 | }, | 427 | }, |
| 428 | | 428 | |
| 429 | ast.Node.PrefixOp.Op.ArrayType => |array_index| { | 429 | ast.Node.PrefixOp.Op.ArrayType => |array_index| { |
| 430 | try renderToken(tree, stream, prefix_op_node.op_token, indent, start_col, Space.None); // [ | 430 | const lbracket = prefix_op_node.op_token; |
| 431 | try renderExpression(allocator, stream, tree, indent, start_col, array_index, Space.None); | 431 | const rbracket = tree.nextToken(array_index.lastToken()); |
| 432 | try renderToken(tree, stream, tree.nextToken(array_index.lastToken()), indent, start_col, Space.None); // ] | 432 | |
| | 433 | try renderToken(tree, stream, lbracket, indent, start_col, Space.None); // [ |
| | 434 | |
| | 435 | const starts_with_comment = tree.tokens.at(lbracket + 1).id == .LineComment; |
| | 436 | const ends_with_comment = tree.tokens.at(rbracket - 1).id == .LineComment; |
| | 437 | const new_indent = if (ends_with_comment) indent + indent_delta else indent; |
| | 438 | const new_space = if (ends_with_comment) Space.Newline else Space.None; |
| | 439 | try renderExpression(allocator, stream, tree, new_indent, start_col, array_index, new_space); |
| | 440 | if (starts_with_comment) { |
| | 441 | try stream.writeByte('\n'); |
| | 442 | } |
| | 443 | if (ends_with_comment or starts_with_comment) { |
| | 444 | try stream.writeByteNTimes(' ', indent); |
| | 445 | } |
| | 446 | try renderToken(tree, stream, rbracket, indent, start_col, Space.None); // ] |
| 433 | }, | 447 | }, |
| 434 | ast.Node.PrefixOp.Op.BitNot, | 448 | ast.Node.PrefixOp.Op.BitNot, |
| 435 | ast.Node.PrefixOp.Op.BoolNot, | 449 | ast.Node.PrefixOp.Op.BoolNot, |
| ... | @@ -524,7 +538,18 @@ fn renderExpression( | ... | @@ -524,7 +538,18 @@ fn renderExpression( |
| 524 | | 538 | |
| 525 | try renderExpression(allocator, stream, tree, indent, start_col, suffix_op.lhs, Space.None); | 539 | try renderExpression(allocator, stream, tree, indent, start_col, suffix_op.lhs, Space.None); |
| 526 | try renderToken(tree, stream, lbracket, indent, start_col, Space.None); // [ | 540 | try renderToken(tree, stream, lbracket, indent, start_col, Space.None); // [ |
| 527 | try renderExpression(allocator, stream, tree, indent, start_col, index_expr, Space.None); | 541 | |
| | 542 | const starts_with_comment = tree.tokens.at(lbracket + 1).id == .LineComment; |
| | 543 | const ends_with_comment = tree.tokens.at(rbracket - 1).id == .LineComment; |
| | 544 | const new_indent = if (ends_with_comment) indent + indent_delta else indent; |
| | 545 | const new_space = if (ends_with_comment) Space.Newline else Space.None; |
| | 546 | try renderExpression(allocator, stream, tree, new_indent, start_col, index_expr, new_space); |
| | 547 | if (starts_with_comment) { |
| | 548 | try stream.writeByte('\n'); |
| | 549 | } |
| | 550 | if (ends_with_comment or starts_with_comment) { |
| | 551 | try stream.writeByteNTimes(' ', indent); |
| | 552 | } |
| 528 | return renderToken(tree, stream, rbracket, indent, start_col, space); // ] | 553 | return renderToken(tree, stream, rbracket, indent, start_col, space); // ] |
| 529 | }, | 554 | }, |
| 530 | | 555 | |
| ... | @@ -559,7 +584,7 @@ fn renderExpression( | ... | @@ -559,7 +584,7 @@ fn renderExpression( |
| 559 | | 584 | |
| 560 | if (field_inits.len == 0) { | 585 | if (field_inits.len == 0) { |
| 561 | try renderExpression(allocator, stream, tree, indent, start_col, suffix_op.lhs, Space.None); | 586 | try renderExpression(allocator, stream, tree, indent, start_col, suffix_op.lhs, Space.None); |
| 562 | try renderToken(tree, stream, lbrace, indent, start_col, Space.None); | 587 | try renderToken(tree, stream, lbrace, indent + indent_delta, start_col, Space.None); |
| 563 | return renderToken(tree, stream, suffix_op.rtoken, indent, start_col, space); | 588 | return renderToken(tree, stream, suffix_op.rtoken, indent, start_col, space); |
| 564 | } | 589 | } |
| 565 | | 590 | |
| ... | @@ -2019,7 +2044,7 @@ fn renderTokenOffset( | ... | @@ -2019,7 +2044,7 @@ fn renderTokenOffset( |
| 2019 | | 2044 | |
| 2020 | const after_comment_token = tree.tokens.at(token_index + offset); | 2045 | const after_comment_token = tree.tokens.at(token_index + offset); |
| 2021 | const next_line_indent = switch (after_comment_token.id) { | 2046 | const next_line_indent = switch (after_comment_token.id) { |
| 2022 | Token.Id.RParen, Token.Id.RBrace, Token.Id.RBracket => indent - indent_delta, | 2047 | Token.Id.RParen, Token.Id.RBrace, Token.Id.RBracket => if (indent > indent_delta) indent - indent_delta else 0, |
| 2023 | else => indent, | 2048 | else => indent, |
| 2024 | }; | 2049 | }; |
| 2025 | try stream.writeByteNTimes(' ', next_line_indent); | 2050 | try stream.writeByteNTimes(' ', next_line_indent); |