IR: implement defer

This commit is contained in:
Andrew Kelley
2016-12-06 21:26:17 -05:00
parent 0c531d447d
commit 6ed202ab16
8 changed files with 95 additions and 189 deletions

View File

@@ -1414,7 +1414,7 @@ static AstNode *ast_parse_return_expr(ParseContext *pc, size_t *token_index) {
}
/*
Defer = option("%" | "?") "defer" option(Expression)
Defer = option("%" | "?") "defer" Expression
*/
static AstNode *ast_parse_defer_expr(ParseContext *pc, size_t *token_index) {
Token *token = &pc->tokens->at(*token_index);
@@ -1450,7 +1450,7 @@ static AstNode *ast_parse_defer_expr(ParseContext *pc, size_t *token_index) {
AstNode *node = ast_create_node(pc, node_type, token);
node->data.defer.kind = kind;
node->data.defer.expr = ast_parse_expression(pc, token_index, false);
node->data.defer.expr = ast_parse_expression(pc, token_index, true);
return node;
}