| ... | @@ -257,27 +257,29 @@ fn renderExpression(ais: *Ais, tree: ast.Tree, node: ast.Node.Index, space: Spac | ... | @@ -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 | 260 | .Catch => { |
| 261 | //.Catch => { | 261 | const main_token = main_tokens[node]; |
| 262 | // const infix_op_node = @fieldParentPtr(ast.Node.Catch, "base", base); | 262 | const fallback_first = tree.firstToken(datas[node].rhs); |
| 263 | | 263 | |
| 264 | // const op_space = Space.Space; | 264 | const same_line = tree.tokensOnSameLine(main_token, fallback_first); |
| 265 | // try renderExpression(ais, tree, infix_op_node.lhs, op_space); | 265 | const after_op_space = if (same_line) Space.Space else Space.Newline; |
| 266 | | 266 | |
| 267 | // const after_op_space = blk: { | 267 | try renderExpression(ais, tree, datas[node].lhs, .Space); // target |
| 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 | // }; | | |
| 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| { | 279 | ais.pushIndentOneShot(); |
| 275 | // try renderExpression(ais, tree, payload, Space.Space); | 280 | try renderExpression(ais, tree, datas[node].rhs, space); // fallback |
| 276 | // } | 281 | }, |
| 277 | | 282 | |
| 278 | // ais.pushIndentOneShot(); | | |
| 279 | // return renderExpression(ais, tree, infix_op_node.rhs, space); | | |
| 280 | //}, | | |
| 281 | .FieldAccess => { | 283 | .FieldAccess => { |
| 282 | const field_access = datas[node]; | 284 | const field_access = datas[node]; |
| 283 | try renderExpression(ais, tree, field_access.lhs, .None); | 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,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 | 521 | .Return => { |
| 520 | //.Return => { | 522 | if (datas[node].lhs != 0) { |
| 521 | // const flow_expr = base.castTag(.Return).?; | 523 | try renderToken(ais, tree, main_tokens[node], .Space); |
| 522 | // if (flow_expr.getRHS()) |rhs| { | 524 | try renderExpression(ais, tree, datas[node].lhs, space); |
| 523 | // try renderToken(ais, tree, flow_expr.ltoken, Space.Space); | 525 | } else { |
| 524 | // return renderExpression(ais, tree, rhs, space); | 526 | try renderToken(ais, tree, main_tokens[node], space); |
| 525 | // } else { | 527 | } |
| 526 | // return renderToken(ais, tree, flow_expr.ltoken, space); | 528 | }, |
| 527 | // } | | |
| 528 | //}, | | |
| 529 | | 529 | |
| 530 | .GroupedExpression => unreachable, // TODO | 530 | .GroupedExpression => unreachable, // TODO |
| 531 | //.GroupedExpression => { | 531 | //.GroupedExpression => { |