From 58d94e175a126cd8209f5ff3083a94eb8b12d48e Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sat, 3 Feb 2024 16:16:52 -0600 Subject: [PATCH] added: `defer` as alternative to `#bottom_test` --- compiler/src/parser.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/compiler/src/parser.c b/compiler/src/parser.c index 3277f2c0..75739546 100644 --- a/compiler/src/parser.c +++ b/compiler/src/parser.c @@ -1292,7 +1292,8 @@ static AstIfWhile* parse_while_stmt(OnyxParser* parser) { AstIfWhile* while_node = make_node(AstIfWhile, Ast_Kind_While); while_node->token = while_token; - if (parse_possible_directive(parser, "bottom_test")) { + if (parse_possible_directive(parser, "bottom_test") + || consume_token_if_next(parser, Token_Type_Keyword_Defer)) { while_node->bottom_test = 1; } @@ -1311,6 +1312,11 @@ static AstIfWhile* parse_while_stmt(OnyxParser* parser) { if (had_initialization || parser->curr->type == ';') { expect_token(parser, ';'); + if (parse_possible_directive(parser, "bottom_test") + || consume_token_if_next(parser, Token_Type_Keyword_Defer)) { + while_node->bottom_test = 1; + } + cond = parse_expression(parser, 1); } else { cond = (AstTyped *) initialization_or_cond; -- 2.25.1