| ... | @@ -232,9 +232,9 @@ fn renderContainerDecl(allocator: *mem.Allocator, stream: anytype, tree: *ast.Tr | ... | @@ -232,9 +232,9 @@ fn renderContainerDecl(allocator: *mem.Allocator, stream: anytype, tree: *ast.Tr |
| 232 | .FnProto => { | 232 | .FnProto => { |
| 233 | const fn_proto = @fieldParentPtr(ast.Node.FnProto, "base", decl); | 233 | const fn_proto = @fieldParentPtr(ast.Node.FnProto, "base", decl); |
| 234 | | 234 | |
| 235 | try renderDocComments(tree, stream, fn_proto, fn_proto.getTrailer("doc_comments"), indent, start_col); | 235 | try renderDocComments(tree, stream, fn_proto, fn_proto.getTrailer(.doc_comments), indent, start_col); |
| 236 | | 236 | |
| 237 | if (fn_proto.getTrailer("body_node")) |body_node| { | 237 | if (fn_proto.getTrailer(.body_node)) |body_node| { |
| 238 | try renderExpression(allocator, stream, tree, indent, start_col, decl, .Space); | 238 | try renderExpression(allocator, stream, tree, indent, start_col, decl, .Space); |
| 239 | try renderExpression(allocator, stream, tree, indent, start_col, body_node, space); | 239 | try renderExpression(allocator, stream, tree, indent, start_col, body_node, space); |
| 240 | } else { | 240 | } else { |
| ... | @@ -257,7 +257,7 @@ fn renderContainerDecl(allocator: *mem.Allocator, stream: anytype, tree: *ast.Tr | ... | @@ -257,7 +257,7 @@ fn renderContainerDecl(allocator: *mem.Allocator, stream: anytype, tree: *ast.Tr |
| 257 | .VarDecl => { | 257 | .VarDecl => { |
| 258 | const var_decl = @fieldParentPtr(ast.Node.VarDecl, "base", decl); | 258 | const var_decl = @fieldParentPtr(ast.Node.VarDecl, "base", decl); |
| 259 | | 259 | |
| 260 | try renderDocComments(tree, stream, var_decl, var_decl.getTrailer("doc_comments"), indent, start_col); | 260 | try renderDocComments(tree, stream, var_decl, var_decl.getTrailer(.doc_comments), indent, start_col); |
| 261 | try renderVarDecl(allocator, stream, tree, indent, start_col, var_decl); | 261 | try renderVarDecl(allocator, stream, tree, indent, start_col, var_decl); |
| 262 | }, | 262 | }, |
| 263 | | 263 | |
| ... | @@ -1520,23 +1520,23 @@ fn renderExpression( | ... | @@ -1520,23 +1520,23 @@ fn renderExpression( |
| 1520 | .FnProto => { | 1520 | .FnProto => { |
| 1521 | const fn_proto = @fieldParentPtr(ast.Node.FnProto, "base", base); | 1521 | const fn_proto = @fieldParentPtr(ast.Node.FnProto, "base", base); |
| 1522 | | 1522 | |
| 1523 | if (fn_proto.getTrailer("visib_token")) |visib_token_index| { | 1523 | if (fn_proto.getTrailer(.visib_token)) |visib_token_index| { |
| 1524 | const visib_token = tree.token_ids[visib_token_index]; | 1524 | const visib_token = tree.token_ids[visib_token_index]; |
| 1525 | assert(visib_token == .Keyword_pub or visib_token == .Keyword_export); | 1525 | assert(visib_token == .Keyword_pub or visib_token == .Keyword_export); |
| 1526 | | 1526 | |
| 1527 | try renderToken(tree, stream, visib_token_index, indent, start_col, Space.Space); // pub | 1527 | try renderToken(tree, stream, visib_token_index, indent, start_col, Space.Space); // pub |
| 1528 | } | 1528 | } |
| 1529 | | 1529 | |
| 1530 | if (fn_proto.getTrailer("extern_export_inline_token")) |extern_export_inline_token| { | 1530 | if (fn_proto.getTrailer(.extern_export_inline_token)) |extern_export_inline_token| { |
| 1531 | if (fn_proto.getTrailer("is_extern_prototype") == null) | 1531 | if (fn_proto.getTrailer(.is_extern_prototype) == null) |
| 1532 | try renderToken(tree, stream, extern_export_inline_token, indent, start_col, Space.Space); // extern/export/inline | 1532 | try renderToken(tree, stream, extern_export_inline_token, indent, start_col, Space.Space); // extern/export/inline |
| 1533 | } | 1533 | } |
| 1534 | | 1534 | |
| 1535 | if (fn_proto.getTrailer("lib_name")) |lib_name| { | 1535 | if (fn_proto.getTrailer(.lib_name)) |lib_name| { |
| 1536 | try renderExpression(allocator, stream, tree, indent, start_col, lib_name, Space.Space); | 1536 | try renderExpression(allocator, stream, tree, indent, start_col, lib_name, Space.Space); |
| 1537 | } | 1537 | } |
| 1538 | | 1538 | |
| 1539 | const lparen = if (fn_proto.getTrailer("name_token")) |name_token| blk: { | 1539 | const lparen = if (fn_proto.getTrailer(.name_token)) |name_token| blk: { |
| 1540 | try renderToken(tree, stream, fn_proto.fn_token, indent, start_col, Space.Space); // fn | 1540 | try renderToken(tree, stream, fn_proto.fn_token, indent, start_col, Space.Space); // fn |
| 1541 | try renderToken(tree, stream, name_token, indent, start_col, Space.None); // name | 1541 | try renderToken(tree, stream, name_token, indent, start_col, Space.None); // name |
| 1542 | break :blk tree.nextToken(name_token); | 1542 | break :blk tree.nextToken(name_token); |
| ... | @@ -1549,11 +1549,11 @@ fn renderExpression( | ... | @@ -1549,11 +1549,11 @@ fn renderExpression( |
| 1549 | const rparen = tree.prevToken( | 1549 | const rparen = tree.prevToken( |
| 1550 | // the first token for the annotation expressions is the left | 1550 | // the first token for the annotation expressions is the left |
| 1551 | // parenthesis, hence the need for two prevToken | 1551 | // parenthesis, hence the need for two prevToken |
| 1552 | if (fn_proto.getTrailer("align_expr")) |align_expr| | 1552 | if (fn_proto.getTrailer(.align_expr)) |align_expr| |
| 1553 | tree.prevToken(tree.prevToken(align_expr.firstToken())) | 1553 | tree.prevToken(tree.prevToken(align_expr.firstToken())) |
| 1554 | else if (fn_proto.getTrailer("section_expr")) |section_expr| | 1554 | else if (fn_proto.getTrailer(.section_expr)) |section_expr| |
| 1555 | tree.prevToken(tree.prevToken(section_expr.firstToken())) | 1555 | tree.prevToken(tree.prevToken(section_expr.firstToken())) |
| 1556 | else if (fn_proto.getTrailer("callconv_expr")) |callconv_expr| | 1556 | else if (fn_proto.getTrailer(.callconv_expr)) |callconv_expr| |
| 1557 | tree.prevToken(tree.prevToken(callconv_expr.firstToken())) | 1557 | tree.prevToken(tree.prevToken(callconv_expr.firstToken())) |
| 1558 | else switch (fn_proto.return_type) { | 1558 | else switch (fn_proto.return_type) { |
| 1559 | .Explicit => |node| node.firstToken(), | 1559 | .Explicit => |node| node.firstToken(), |
| ... | @@ -1574,12 +1574,12 @@ fn renderExpression( | ... | @@ -1574,12 +1574,12 @@ fn renderExpression( |
| 1574 | for (fn_proto.params()) |param_decl, i| { | 1574 | for (fn_proto.params()) |param_decl, i| { |
| 1575 | try renderParamDecl(allocator, stream, tree, indent, start_col, param_decl, Space.None); | 1575 | try renderParamDecl(allocator, stream, tree, indent, start_col, param_decl, Space.None); |
| 1576 | | 1576 | |
| 1577 | if (i + 1 < fn_proto.params_len or fn_proto.getTrailer("var_args_token") != null) { | 1577 | if (i + 1 < fn_proto.params_len or fn_proto.getTrailer(.var_args_token) != null) { |
| 1578 | const comma = tree.nextToken(param_decl.lastToken()); | 1578 | const comma = tree.nextToken(param_decl.lastToken()); |
| 1579 | try renderToken(tree, stream, comma, indent, start_col, Space.Space); // , | 1579 | try renderToken(tree, stream, comma, indent, start_col, Space.Space); // , |
| 1580 | } | 1580 | } |
| 1581 | } | 1581 | } |
| 1582 | if (fn_proto.getTrailer("var_args_token")) |var_args_token| { | 1582 | if (fn_proto.getTrailer(.var_args_token)) |var_args_token| { |
| 1583 | try renderToken(tree, stream, var_args_token, indent, start_col, Space.None); | 1583 | try renderToken(tree, stream, var_args_token, indent, start_col, Space.None); |
| 1584 | } | 1584 | } |
| 1585 | } else { | 1585 | } else { |
| ... | @@ -1591,7 +1591,7 @@ fn renderExpression( | ... | @@ -1591,7 +1591,7 @@ fn renderExpression( |
| 1591 | try stream.writeByteNTimes(' ', new_indent); | 1591 | try stream.writeByteNTimes(' ', new_indent); |
| 1592 | try renderParamDecl(allocator, stream, tree, new_indent, start_col, param_decl, Space.Comma); | 1592 | try renderParamDecl(allocator, stream, tree, new_indent, start_col, param_decl, Space.Comma); |
| 1593 | } | 1593 | } |
| 1594 | if (fn_proto.getTrailer("var_args_token")) |var_args_token| { | 1594 | if (fn_proto.getTrailer(.var_args_token)) |var_args_token| { |
| 1595 | try stream.writeByteNTimes(' ', new_indent); | 1595 | try stream.writeByteNTimes(' ', new_indent); |
| 1596 | try renderToken(tree, stream, var_args_token, new_indent, start_col, Space.Comma); | 1596 | try renderToken(tree, stream, var_args_token, new_indent, start_col, Space.Comma); |
| 1597 | } | 1597 | } |
| ... | @@ -1600,7 +1600,7 @@ fn renderExpression( | ... | @@ -1600,7 +1600,7 @@ fn renderExpression( |
| 1600 | | 1600 | |
| 1601 | try renderToken(tree, stream, rparen, indent, start_col, Space.Space); // ) | 1601 | try renderToken(tree, stream, rparen, indent, start_col, Space.Space); // ) |
| 1602 | | 1602 | |
| 1603 | if (fn_proto.getTrailer("align_expr")) |align_expr| { | 1603 | if (fn_proto.getTrailer(.align_expr)) |align_expr| { |
| 1604 | const align_rparen = tree.nextToken(align_expr.lastToken()); | 1604 | const align_rparen = tree.nextToken(align_expr.lastToken()); |
| 1605 | const align_lparen = tree.prevToken(align_expr.firstToken()); | 1605 | const align_lparen = tree.prevToken(align_expr.firstToken()); |
| 1606 | const align_kw = tree.prevToken(align_lparen); | 1606 | const align_kw = tree.prevToken(align_lparen); |
| ... | @@ -1611,7 +1611,7 @@ fn renderExpression( | ... | @@ -1611,7 +1611,7 @@ fn renderExpression( |
| 1611 | try renderToken(tree, stream, align_rparen, indent, start_col, Space.Space); // ) | 1611 | try renderToken(tree, stream, align_rparen, indent, start_col, Space.Space); // ) |
| 1612 | } | 1612 | } |
| 1613 | | 1613 | |
| 1614 | if (fn_proto.getTrailer("section_expr")) |section_expr| { | 1614 | if (fn_proto.getTrailer(.section_expr)) |section_expr| { |
| 1615 | const section_rparen = tree.nextToken(section_expr.lastToken()); | 1615 | const section_rparen = tree.nextToken(section_expr.lastToken()); |
| 1616 | const section_lparen = tree.prevToken(section_expr.firstToken()); | 1616 | const section_lparen = tree.prevToken(section_expr.firstToken()); |
| 1617 | const section_kw = tree.prevToken(section_lparen); | 1617 | const section_kw = tree.prevToken(section_lparen); |
| ... | @@ -1622,7 +1622,7 @@ fn renderExpression( | ... | @@ -1622,7 +1622,7 @@ fn renderExpression( |
| 1622 | try renderToken(tree, stream, section_rparen, indent, start_col, Space.Space); // ) | 1622 | try renderToken(tree, stream, section_rparen, indent, start_col, Space.Space); // ) |
| 1623 | } | 1623 | } |
| 1624 | | 1624 | |
| 1625 | if (fn_proto.getTrailer("callconv_expr")) |callconv_expr| { | 1625 | if (fn_proto.getTrailer(.callconv_expr)) |callconv_expr| { |
| 1626 | const callconv_rparen = tree.nextToken(callconv_expr.lastToken()); | 1626 | const callconv_rparen = tree.nextToken(callconv_expr.lastToken()); |
| 1627 | const callconv_lparen = tree.prevToken(callconv_expr.firstToken()); | 1627 | const callconv_lparen = tree.prevToken(callconv_expr.firstToken()); |
| 1628 | const callconv_kw = tree.prevToken(callconv_lparen); | 1628 | const callconv_kw = tree.prevToken(callconv_lparen); |
| ... | @@ -1631,9 +1631,9 @@ fn renderExpression( | ... | @@ -1631,9 +1631,9 @@ fn renderExpression( |
| 1631 | try renderToken(tree, stream, callconv_lparen, indent, start_col, Space.None); // ( | 1631 | try renderToken(tree, stream, callconv_lparen, indent, start_col, Space.None); // ( |
| 1632 | try renderExpression(allocator, stream, tree, indent, start_col, callconv_expr, Space.None); | 1632 | try renderExpression(allocator, stream, tree, indent, start_col, callconv_expr, Space.None); |
| 1633 | try renderToken(tree, stream, callconv_rparen, indent, start_col, Space.Space); // ) | 1633 | try renderToken(tree, stream, callconv_rparen, indent, start_col, Space.Space); // ) |
| 1634 | } else if (fn_proto.getTrailer("is_extern_prototype") != null) { | 1634 | } else if (fn_proto.getTrailer(.is_extern_prototype) != null) { |
| 1635 | try stream.writeAll("callconv(.C) "); | 1635 | try stream.writeAll("callconv(.C) "); |
| 1636 | } else if (fn_proto.getTrailer("is_async") != null) { | 1636 | } else if (fn_proto.getTrailer(.is_async) != null) { |
| 1637 | try stream.writeAll("callconv(.Async) "); | 1637 | try stream.writeAll("callconv(.Async) "); |
| 1638 | } | 1638 | } |
| 1639 | | 1639 | |
| ... | @@ -2221,69 +2221,69 @@ fn renderVarDecl( | ... | @@ -2221,69 +2221,69 @@ fn renderVarDecl( |
| 2221 | start_col: *usize, | 2221 | start_col: *usize, |
| 2222 | var_decl: *ast.Node.VarDecl, | 2222 | var_decl: *ast.Node.VarDecl, |
| 2223 | ) (@TypeOf(stream).Error || Error)!void { | 2223 | ) (@TypeOf(stream).Error || Error)!void { |
| 2224 | if (var_decl.getTrailer("visib_token")) |visib_token| { | 2224 | if (var_decl.getTrailer(.visib_token)) |visib_token| { |
| 2225 | try renderToken(tree, stream, visib_token, indent, start_col, Space.Space); // pub | 2225 | try renderToken(tree, stream, visib_token, indent, start_col, Space.Space); // pub |
| 2226 | } | 2226 | } |
| 2227 | | 2227 | |
| 2228 | if (var_decl.getTrailer("extern_export_token")) |extern_export_token| { | 2228 | if (var_decl.getTrailer(.extern_export_token)) |extern_export_token| { |
| 2229 | try renderToken(tree, stream, extern_export_token, indent, start_col, Space.Space); // extern | 2229 | try renderToken(tree, stream, extern_export_token, indent, start_col, Space.Space); // extern |
| 2230 | | 2230 | |
| 2231 | if (var_decl.getTrailer("lib_name")) |lib_name| { | 2231 | if (var_decl.getTrailer(.lib_name)) |lib_name| { |
| 2232 | try renderExpression(allocator, stream, tree, indent, start_col, lib_name, Space.Space); // "lib" | 2232 | try renderExpression(allocator, stream, tree, indent, start_col, lib_name, Space.Space); // "lib" |
| 2233 | } | 2233 | } |
| 2234 | } | 2234 | } |
| 2235 | | 2235 | |
| 2236 | if (var_decl.getTrailer("comptime_token")) |comptime_token| { | 2236 | if (var_decl.getTrailer(.comptime_token)) |comptime_token| { |
| 2237 | try renderToken(tree, stream, comptime_token, indent, start_col, Space.Space); // comptime | 2237 | try renderToken(tree, stream, comptime_token, indent, start_col, Space.Space); // comptime |
| 2238 | } | 2238 | } |
| 2239 | | 2239 | |
| 2240 | if (var_decl.getTrailer("thread_local_token")) |thread_local_token| { | 2240 | if (var_decl.getTrailer(.thread_local_token)) |thread_local_token| { |
| 2241 | try renderToken(tree, stream, thread_local_token, indent, start_col, Space.Space); // threadlocal | 2241 | try renderToken(tree, stream, thread_local_token, indent, start_col, Space.Space); // threadlocal |
| 2242 | } | 2242 | } |
| 2243 | try renderToken(tree, stream, var_decl.mut_token, indent, start_col, Space.Space); // var | 2243 | try renderToken(tree, stream, var_decl.mut_token, indent, start_col, Space.Space); // var |
| 2244 | | 2244 | |
| 2245 | const name_space = if (var_decl.getTrailer("type_node") == null and | 2245 | const name_space = if (var_decl.getTrailer(.type_node) == null and |
| 2246 | (var_decl.getTrailer("align_node") != null or | 2246 | (var_decl.getTrailer(.align_node) != null or |
| 2247 | var_decl.getTrailer("section_node") != null or | 2247 | var_decl.getTrailer(.section_node) != null or |
| 2248 | var_decl.getTrailer("init_node") != null)) | 2248 | var_decl.getTrailer(.init_node) != null)) |
| 2249 | Space.Space | 2249 | Space.Space |
| 2250 | else | 2250 | else |
| 2251 | Space.None; | 2251 | Space.None; |
| 2252 | try renderToken(tree, stream, var_decl.name_token, indent, start_col, name_space); | 2252 | try renderToken(tree, stream, var_decl.name_token, indent, start_col, name_space); |
| 2253 | | 2253 | |
| 2254 | if (var_decl.getTrailer("type_node")) |type_node| { | 2254 | if (var_decl.getTrailer(.type_node)) |type_node| { |
| 2255 | try renderToken(tree, stream, tree.nextToken(var_decl.name_token), indent, start_col, Space.Space); | 2255 | try renderToken(tree, stream, tree.nextToken(var_decl.name_token), indent, start_col, Space.Space); |
| 2256 | const s = if (var_decl.getTrailer("align_node") != null or | 2256 | const s = if (var_decl.getTrailer(.align_node) != null or |
| 2257 | var_decl.getTrailer("section_node") != null or | 2257 | var_decl.getTrailer(.section_node) != null or |
| 2258 | var_decl.getTrailer("init_node") != null) Space.Space else Space.None; | 2258 | var_decl.getTrailer(.init_node) != null) Space.Space else Space.None; |
| 2259 | try renderExpression(allocator, stream, tree, indent, start_col, type_node, s); | 2259 | try renderExpression(allocator, stream, tree, indent, start_col, type_node, s); |
| 2260 | } | 2260 | } |
| 2261 | | 2261 | |
| 2262 | if (var_decl.getTrailer("align_node")) |align_node| { | 2262 | if (var_decl.getTrailer(.align_node)) |align_node| { |
| 2263 | const lparen = tree.prevToken(align_node.firstToken()); | 2263 | const lparen = tree.prevToken(align_node.firstToken()); |
| 2264 | const align_kw = tree.prevToken(lparen); | 2264 | const align_kw = tree.prevToken(lparen); |
| 2265 | const rparen = tree.nextToken(align_node.lastToken()); | 2265 | const rparen = tree.nextToken(align_node.lastToken()); |
| 2266 | try renderToken(tree, stream, align_kw, indent, start_col, Space.None); // align | 2266 | try renderToken(tree, stream, align_kw, indent, start_col, Space.None); // align |
| 2267 | try renderToken(tree, stream, lparen, indent, start_col, Space.None); // ( | 2267 | try renderToken(tree, stream, lparen, indent, start_col, Space.None); // ( |
| 2268 | try renderExpression(allocator, stream, tree, indent, start_col, align_node, Space.None); | 2268 | try renderExpression(allocator, stream, tree, indent, start_col, align_node, Space.None); |
| 2269 | const s = if (var_decl.getTrailer("section_node") != null or var_decl.getTrailer("init_node") != null) Space.Space else Space.None; | 2269 | const s = if (var_decl.getTrailer(.section_node) != null or var_decl.getTrailer(.init_node) != null) Space.Space else Space.None; |
| 2270 | try renderToken(tree, stream, rparen, indent, start_col, s); // ) | 2270 | try renderToken(tree, stream, rparen, indent, start_col, s); // ) |
| 2271 | } | 2271 | } |
| 2272 | | 2272 | |
| 2273 | if (var_decl.getTrailer("section_node")) |section_node| { | 2273 | if (var_decl.getTrailer(.section_node)) |section_node| { |
| 2274 | const lparen = tree.prevToken(section_node.firstToken()); | 2274 | const lparen = tree.prevToken(section_node.firstToken()); |
| 2275 | const section_kw = tree.prevToken(lparen); | 2275 | const section_kw = tree.prevToken(lparen); |
| 2276 | const rparen = tree.nextToken(section_node.lastToken()); | 2276 | const rparen = tree.nextToken(section_node.lastToken()); |
| 2277 | try renderToken(tree, stream, section_kw, indent, start_col, Space.None); // linksection | 2277 | try renderToken(tree, stream, section_kw, indent, start_col, Space.None); // linksection |
| 2278 | try renderToken(tree, stream, lparen, indent, start_col, Space.None); // ( | 2278 | try renderToken(tree, stream, lparen, indent, start_col, Space.None); // ( |
| 2279 | try renderExpression(allocator, stream, tree, indent, start_col, section_node, Space.None); | 2279 | try renderExpression(allocator, stream, tree, indent, start_col, section_node, Space.None); |
| 2280 | const s = if (var_decl.getTrailer("init_node") != null) Space.Space else Space.None; | 2280 | const s = if (var_decl.getTrailer(.init_node) != null) Space.Space else Space.None; |
| 2281 | try renderToken(tree, stream, rparen, indent, start_col, s); // ) | 2281 | try renderToken(tree, stream, rparen, indent, start_col, s); // ) |
| 2282 | } | 2282 | } |
| 2283 | | 2283 | |
| 2284 | if (var_decl.getTrailer("init_node")) |init_node| { | 2284 | if (var_decl.getTrailer(.init_node)) |init_node| { |
| 2285 | const s = if (init_node.tag == .MultilineStringLiteral) Space.None else Space.Space; | 2285 | const s = if (init_node.tag == .MultilineStringLiteral) Space.None else Space.Space; |
| 2286 | try renderToken(tree, stream, var_decl.getTrailer("eq_token").?, indent, start_col, s); // = | 2286 | try renderToken(tree, stream, var_decl.getTrailer(.eq_token).?, indent, start_col, s); // = |
| 2287 | try renderExpression(allocator, stream, tree, indent, start_col, init_node, Space.None); | 2287 | try renderExpression(allocator, stream, tree, indent, start_col, init_node, Space.None); |
| 2288 | } | 2288 | } |
| 2289 | | 2289 | |