| ... | ... | @@ -257,27 +257,29 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac |
| 257 | 257 | // } |
| 258 | 258 | //}, |
| 259 | 259 | |
| 260 | | .Catch => unreachable, // TODO |
| 261 | | //.Catch => { |
| 262 | | // const infix_op_node = @fieldParentPtr(ast.Node.Catch, "base", base); |
| 260 | .Catch => { |
| 261 | const main_token = main_tokens[node]; |
| 262 | const fallback_first = tree.firstToken(datas[node].rhs); |
| 263 | 263 | |
| 264 | | // const op_space = Space.Space; |
| 265 | | // try renderExpression(ais, tree, infix_op_node.lhs, op_space); |
| 264 | const same_line = tree.tokensOnSameLine(main_token, fallback_first); |
| 265 | const after_op_space = if (same_line) Space.Space else Space.Newline; |
| 266 | 266 | |
| 267 | | // const after_op_space = blk: { |
| 268 | | // const same_line = tree.tokensOnSameLine(infix_op_node.op_token, tree.nextToken(infix_op_node.op_token)); |
| 269 | | // break :blk if (same_line) op_space else Space.Newline; |
| 270 | | // }; |
| 267 | try renderExpression(ais, tree, datas[node].lhs, .Space); // target |
| 271 | 268 | |
| 272 | | // try renderToken(ais, tree, infix_op_node.op_token, after_op_space); |
| 269 | if (token_tags[fallback_first - 1] == .Pipe) { |
| 270 | try renderToken(ais, tree, main_token, .Space); // catch keyword |
| 271 | try renderToken(ais, tree, main_token + 1, .None); // pipe |
| 272 | try renderToken(ais, tree, main_token + 2, .None); // payload identifier |
| 273 | try renderToken(ais, tree, main_token + 3, after_op_space); // pipe |
| 274 | } else { |
| 275 | assert(token_tags[fallback_first - 1] == .Keyword_catch); |
| 276 | try renderToken(ais, tree, main_token, after_op_space); // catch keyword |
| 277 | } |
| 273 | 278 | |
| 274 | | // if (infix_op_node.payload) |payload| { |
| 275 | | // try renderExpression(ais, tree, payload, Space.Space); |
| 276 | | // } |
| 279 | ais.pushIndentOneShot(); |
| 280 | try renderExpression(ais, tree, datas[node].rhs, space); // fallback |
| 281 | }, |
| 277 | 282 | |
| 278 | | // ais.pushIndentOneShot(); |
| 279 | | // return renderExpression(ais, tree, infix_op_node.rhs, space); |
| 280 | | //}, |
| 281 | 283 | .FieldAccess => { |
| 282 | 284 | const field_access = datas[node]; |
| 283 | 285 | try renderExpression(ais, tree, field_access.lhs, .None); |
| ... | ... | @@ -516,16 +518,14 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac |
| 516 | 518 | // } |
| 517 | 519 | //}, |
| 518 | 520 | |
| 519 | | .Return => unreachable, // TODO |
| 520 | | //.Return => { |
| 521 | | // const flow_expr = base.castTag(.Return).?; |
| 522 | | // if (flow_expr.getRHS()) |rhs| { |
| 523 | | // try renderToken(ais, tree, flow_expr.ltoken, Space.Space); |
| 524 | | // return renderExpression(ais, tree, rhs, space); |
| 525 | | // } else { |
| 526 | | // return renderToken(ais, tree, flow_expr.ltoken, space); |
| 527 | | // } |
| 528 | | //}, |
| 521 | .Return => { |
| 522 | if (datas[node].lhs != 0) { |
| 523 | try renderToken(ais, tree, main_tokens[node], .Space); |
| 524 | try renderExpression(ais, tree, datas[node].lhs, space); |
| 525 | } else { |
| 526 | try renderToken(ais, tree, main_tokens[node], space); |
| 527 | } |
| 528 | }, |
| 529 | 529 | |
| 530 | 530 | .GroupedExpression => unreachable, // TODO |
| 531 | 531 | //.GroupedExpression => { |