| ... | @@ -15,6 +15,20 @@ pub const Error = error{ | ... | @@ -15,6 +15,20 @@ pub const Error = error{ |
| 15 | pub fn render(allocator: &mem.Allocator, stream: var, tree: &ast.Tree) (@typeOf(stream).Child.Error || Error)!void { | 15 | pub fn render(allocator: &mem.Allocator, stream: var, tree: &ast.Tree) (@typeOf(stream).Child.Error || Error)!void { |
| 16 | comptime assert(@typeId(@typeOf(stream)) == builtin.TypeId.Pointer); | 16 | comptime assert(@typeId(@typeOf(stream)) == builtin.TypeId.Pointer); |
| 17 | | 17 | |
| | 18 | // render all the line comments at the beginning of the file |
| | 19 | var tok_it = tree.tokens.iterator(0); |
| | 20 | while (tok_it.next()) |token| { |
| | 21 | if (token.id != Token.Id.LineComment) break; |
| | 22 | try stream.print("{}\n", tree.tokenSlicePtr(token)); |
| | 23 | if (tok_it.peek()) |next_token| { |
| | 24 | const loc = tree.tokenLocationPtr(token.end, next_token); |
| | 25 | if (loc.line >= 2) { |
| | 26 | try stream.writeByte('\n'); |
| | 27 | } |
| | 28 | } |
| | 29 | } |
| | 30 | |
| | 31 | |
| 18 | var it = tree.root_node.decls.iterator(0); | 32 | var it = tree.root_node.decls.iterator(0); |
| 19 | while (it.next()) |decl| { | 33 | while (it.next()) |decl| { |
| 20 | try renderTopLevelDecl(allocator, stream, tree, 0, decl.*); | 34 | try renderTopLevelDecl(allocator, stream, tree, 0, decl.*); |
| ... | @@ -1455,7 +1469,7 @@ fn renderDocComments(tree: &ast.Tree, stream: var, node: var, indent: usize) (@t | ... | @@ -1455,7 +1469,7 @@ fn renderDocComments(tree: &ast.Tree, stream: var, node: var, indent: usize) (@t |
| 1455 | const comment = node.doc_comments ?? return; | 1469 | const comment = node.doc_comments ?? return; |
| 1456 | var it = comment.lines.iterator(0); | 1470 | var it = comment.lines.iterator(0); |
| 1457 | while (it.next()) |line_token_index| { | 1471 | while (it.next()) |line_token_index| { |
| 1458 | try stream.print("{}\n", tree.tokenSlice(line_token_index.*)); | 1472 | try renderToken(tree, stream, line_token_index.*, indent, Space.Newline); |
| 1459 | try stream.writeByteNTimes(' ', indent); | 1473 | try stream.writeByteNTimes(' ', indent); |
| 1460 | } | 1474 | } |
| 1461 | } | 1475 | } |