| ... | @@ -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; |