authorgravatar for thejoshwolfe@gmail.comJosh Wolfe <thejoshwolfe@gmail.com> 2017-04-02 13:18:12-07:00
committergravatar for thejoshwolfe@gmail.comJosh Wolfe <thejoshwolfe@gmail.com> 2017-04-02 13:18:12-07:00
log8d03d666af1b8b14e6702c2502846e3c1a79e9da
tree2b76c08c09b0ae707619bfb20449210bd45f27eb
parente3c796258c766d5de857ce37eeb3bdc5bb353e68

add secret void expression after defer statement if it's the last statement in a block


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

src/parser.cpp+5-1
...@@ -2125,8 +2125,12 @@ static AstNode *ast_parse_block(ParseContext *pc, size_t *token_index, bool mand...@@ -2125,8 +2125,12 @@ static AstNode *ast_parse_block(ParseContext *pc, size_t *token_index, bool mand
2125 statement_node = ast_parse_variable_declaration_expr(pc, token_index, false, VisibModPrivate);2125 statement_node = ast_parse_variable_declaration_expr(pc, token_index, false, VisibModPrivate);
2126 if (!statement_node) {2126 if (!statement_node) {
2127 statement_node = ast_parse_defer_expr(pc, token_index);2127 statement_node = ast_parse_defer_expr(pc, token_index);
2128 if (!statement_node)2128 if (statement_node) {
2129 // don't let defer be the last statement in a block
2130 need_implicit_final_void_statement = true;
2131 } else {
2129 statement_node = ast_parse_block_expr(pc, token_index, false);2132 statement_node = ast_parse_block_expr(pc, token_index, false);
2133 }
2130 if (statement_node) {2134 if (statement_node) {
2131 if (statement_has_block_body(statement_node))2135 if (statement_has_block_body(statement_node))
2132 semicolon_expected = false;2136 semicolon_expected = false;