authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-06-08 01:16:19-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-06-08 01:16:19-04:00
log52eb34718862928b5d83c58990d5d7a6b07e20e2
treebd42eec2f05ae34f6d80ae8b1cd202971b1bbb14
parenta2fff2628f067898aab54899fa8b74abcd2d2212
signature Commit is signed but in an unrecognized format.

hook up result locs for `try`


5 files changed, 13 insertions(+), 13 deletions(-)

src/all_types.hpp+1-1
......@@ -430,7 +430,7 @@ enum NodeType {
430430 NodeTypeVariableDeclaration,
431431 NodeTypeTestDecl,
432432 NodeTypeBinOpExpr,
433 NodeTypeUnwrapErrorExpr,
433 NodeTypeCatchExpr,
434434 NodeTypeFloatLiteral,
435435 NodeTypeIntLiteral,
436436 NodeTypeStringLiteral,
src/analyze.cpp+1-1
......@@ -2993,7 +2993,7 @@ void scan_decls(CodeGen *g, ScopeDecls *decls_scope, AstNode *node) {
29932993 case NodeTypeBlock:
29942994 case NodeTypeGroupedExpr:
29952995 case NodeTypeBinOpExpr:
2996 case NodeTypeUnwrapErrorExpr:
2996 case NodeTypeCatchExpr:
29972997 case NodeTypeFnCallExpr:
29982998 case NodeTypeArrayAccessExpr:
29992999 case NodeTypeSliceExpr:
src/ast_render.cpp+3-3
......@@ -165,8 +165,8 @@ static const char *node_type_str(NodeType node_type) {
165165 return "Parens";
166166 case NodeTypeBinOpExpr:
167167 return "BinOpExpr";
168 case NodeTypeUnwrapErrorExpr:
169 return "UnwrapErrorExpr";
168 case NodeTypeCatchExpr:
169 return "CatchExpr";
170170 case NodeTypeFnCallExpr:
171171 return "FnCallExpr";
172172 case NodeTypeArrayAccessExpr:
......@@ -1100,7 +1100,7 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) {
11001100 fprintf(ar->f, "]");
11011101 break;
11021102 }
1103 case NodeTypeUnwrapErrorExpr:
1103 case NodeTypeCatchExpr:
11041104 {
11051105 render_node_ungrouped(ar, node->data.unwrap_err_expr.op1);
11061106 fprintf(ar->f, " catch ");
src/ir.cpp+5-5
......@@ -3383,7 +3383,7 @@ static IrInstruction *ir_gen_async_return(IrBuilder *irb, Scope *scope, AstNode
33833383 return ir_build_cond_br(irb, scope, node, is_canceled_bool, irb->exec->coro_final_cleanup_block, irb->exec->coro_early_final, is_comptime);
33843384}
33853385
3386static IrInstruction *ir_gen_return(IrBuilder *irb, Scope *scope, AstNode *node, LVal lval) {
3386static IrInstruction *ir_gen_return(IrBuilder *irb, Scope *scope, AstNode *node, LVal lval, ResultLoc *result_loc) {
33873387 assert(node->type == NodeTypeReturnExpr);
33883388
33893389 ZigFn *fn_entry = exec_fn_entry(irb->exec);
......@@ -3508,7 +3508,7 @@ static IrInstruction *ir_gen_return(IrBuilder *irb, Scope *scope, AstNode *node,
35083508 if (lval == LValPtr)
35093509 return unwrapped_ptr;
35103510 else
3511 return ir_build_load_ptr(irb, scope, node, unwrapped_ptr);
3511 return ir_expr_wrap(irb, scope, ir_build_load_ptr(irb, scope, node, unwrapped_ptr), result_loc);
35123512 }
35133513 }
35143514 zig_unreachable();
......@@ -7083,7 +7083,7 @@ static IrInstruction *ir_gen_slice(IrBuilder *irb, Scope *scope, AstNode *node)
70837083static IrInstruction *ir_gen_catch(IrBuilder *irb, Scope *parent_scope, AstNode *node, LVal lval,
70847084 ResultLoc *result_loc)
70857085{
7086 assert(node->type == NodeTypeUnwrapErrorExpr);
7086 assert(node->type == NodeTypeCatchExpr);
70877087
70887088 AstNode *op1_node = node->data.unwrap_err_expr.op1;
70897089 AstNode *op2_node = node->data.unwrap_err_expr.op2;
......@@ -7895,7 +7895,7 @@ static IrInstruction *ir_gen_node_raw(IrBuilder *irb, AstNode *node, Scope *scop
78957895 case NodeTypeArrayAccessExpr:
78967896 return ir_gen_array_access(irb, scope, node, lval, result_loc);
78977897 case NodeTypeReturnExpr:
7898 return ir_gen_return(irb, scope, node, lval);
7898 return ir_gen_return(irb, scope, node, lval, result_loc);
78997899 case NodeTypeFieldAccessExpr:
79007900 {
79017901 IrInstruction *ptr_instruction = ir_gen_field_access(irb, scope, node);
......@@ -7968,7 +7968,7 @@ static IrInstruction *ir_gen_node_raw(IrBuilder *irb, AstNode *node, Scope *scop
79687968 return ir_lval_wrap(irb, scope, ir_gen_defer(irb, scope, node), lval, result_loc);
79697969 case NodeTypeSliceExpr:
79707970 return ir_lval_wrap(irb, scope, ir_gen_slice(irb, scope, node), lval, result_loc);
7971 case NodeTypeUnwrapErrorExpr:
7971 case NodeTypeCatchExpr:
79727972 return ir_gen_catch(irb, scope, node, lval, result_loc);
79737973 case NodeTypeContainerDecl:
79747974 return ir_lval_wrap(irb, scope, ir_gen_container_decl(irb, scope, node), lval, result_loc);
src/parser.cpp+3-3
......@@ -341,7 +341,7 @@ static AstNode *ast_parse_bin_op_expr(
341341 op->data.bin_op_expr.op1 = left;
342342 op->data.bin_op_expr.op2 = right;
343343 break;
344 case NodeTypeUnwrapErrorExpr:
344 case NodeTypeCatchExpr:
345345 op->data.unwrap_err_expr.op1 = left;
346346 op->data.unwrap_err_expr.op2 = right;
347347 break;
......@@ -2377,7 +2377,7 @@ static AstNode *ast_parse_bitwise_op(ParseContext *pc) {
23772377 Token *catch_token = eat_token_if(pc, TokenIdKeywordCatch);
23782378 if (catch_token != nullptr) {
23792379 Token *payload = ast_parse_payload(pc);
2380 AstNode *res = ast_create_node(pc, NodeTypeUnwrapErrorExpr, catch_token);
2380 AstNode *res = ast_create_node(pc, NodeTypeCatchExpr, catch_token);
23812381 if (payload != nullptr)
23822382 res->data.unwrap_err_expr.symbol = token_symbol(pc, payload);
23832383
......@@ -2864,7 +2864,7 @@ void ast_visit_node_children(AstNode *node, void (*visit)(AstNode **, void *cont
28642864 visit_field(&node->data.bin_op_expr.op1, visit, context);
28652865 visit_field(&node->data.bin_op_expr.op2, visit, context);
28662866 break;
2867 case NodeTypeUnwrapErrorExpr:
2867 case NodeTypeCatchExpr:
28682868 visit_field(&node->data.unwrap_err_expr.op1, visit, context);
28692869 visit_field(&node->data.unwrap_err_expr.symbol, visit, context);
28702870 visit_field(&node->data.unwrap_err_expr.op2, visit, context);