| ... | ... | @@ -1263,17 +1263,41 @@ fn renderExpression( |
| 1263 | 1263 | try renderToken(tree, stream, builtin_call.builtin_token, indent, start_col, Space.None); // @name |
| 1264 | 1264 | } |
| 1265 | 1265 | |
| 1266 | | try renderToken(tree, stream, tree.nextToken(builtin_call.builtin_token), indent, start_col, Space.None); // ( |
| 1266 | const src_params_trailing_comma = blk: { |
| 1267 | if (builtin_call.params.len < 2) break :blk false; |
| 1268 | const last_node = builtin_call.params.at(builtin_call.params.len - 1).*; |
| 1269 | const maybe_comma = tree.nextToken(last_node.lastToken()); |
| 1270 | break :blk tree.tokens.at(maybe_comma).id == .Comma; |
| 1271 | }; |
| 1267 | 1272 | |
| 1268 | | var it = builtin_call.params.iterator(0); |
| 1269 | | while (it.next()) |param_node| { |
| 1270 | | try renderExpression(allocator, stream, tree, indent, start_col, param_node.*, Space.None); |
| 1273 | const lparen = tree.nextToken(builtin_call.builtin_token); |
| 1271 | 1274 | |
| 1272 | | if (it.peek() != null) { |
| 1273 | | const comma_token = tree.nextToken(param_node.*.lastToken()); |
| 1274 | | try renderToken(tree, stream, comma_token, indent, start_col, Space.Space); // , |
| 1275 | if (!src_params_trailing_comma) { |
| 1276 | try renderToken(tree, stream, lparen, indent, start_col, Space.None); // ( |
| 1277 | |
| 1278 | // render all on one line, no trailing comma |
| 1279 | var it = builtin_call.params.iterator(0); |
| 1280 | while (it.next()) |param_node| { |
| 1281 | try renderExpression(allocator, stream, tree, indent, start_col, param_node.*, Space.None); |
| 1282 | |
| 1283 | if (it.peek() != null) { |
| 1284 | const comma_token = tree.nextToken(param_node.*.lastToken()); |
| 1285 | try renderToken(tree, stream, comma_token, indent, start_col, Space.Space); // , |
| 1286 | } |
| 1287 | } |
| 1288 | } else { |
| 1289 | // one param per line |
| 1290 | const new_indent = indent + indent_delta; |
| 1291 | try renderToken(tree, stream, lparen, new_indent, start_col, Space.Newline); // ( |
| 1292 | |
| 1293 | var it = builtin_call.params.iterator(0); |
| 1294 | while (it.next()) |param_node| { |
| 1295 | try stream.writeByteNTimes(' ', new_indent); |
| 1296 | try renderExpression(allocator, stream, tree, indent, start_col, param_node.*, Space.Comma); |
| 1275 | 1297 | } |
| 1298 | try stream.writeByteNTimes(' ', indent); |
| 1276 | 1299 | } |
| 1300 | |
| 1277 | 1301 | return renderToken(tree, stream, builtin_call.rparen_token, indent, start_col, space); // ) |
| 1278 | 1302 | }, |
| 1279 | 1303 | |