From 677ab654bcf710b4902cd634aed9113e31184997 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Mon, 29 Nov 2021 14:09:01 -0600 Subject: [PATCH] added weird syntactic sugar for passing code blocks --- src/parser.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/parser.c b/src/parser.c index bfe4a920..4304880f 100644 --- a/src/parser.c +++ b/src/parser.c @@ -757,17 +757,18 @@ static AstTyped* parse_factor(OnyxParser* parser) { // foo(x, y, #code { // // ... // }) -// -// if (parser->curr->type == '{') { -// AstCodeBlock* code_block = make_node(AstCodeBlock, Ast_Kind_Code_Block); -// code_block->token = parser->curr; -// code_block->type_node = builtin_code_type; -// -// code_block->code = (AstNode *) parse_block(parser, 1, NULL); -// ((AstBlock *) code_block->code)->rules = Block_Rule_Code_Block; -// -// bh_arr_push(call_node->args.values, (AstTyped *) code_block); -// } + if (next_tokens_are(parser, 2, '#', '{')) { + consume_token(parser); + + AstCodeBlock* code_block = make_node(AstCodeBlock, Ast_Kind_Code_Block); + code_block->token = parser->curr; + code_block->type_node = builtin_code_type; + + code_block->code = (AstNode *) parse_block(parser, 1, NULL); + ((AstBlock *) code_block->code)->rules = Block_Rule_Code_Block; + + bh_arr_push(call_node->args.values, (AstTyped *) code_block); + } // Wrap expressions in AstArgument bh_arr_each(AstTyped *, arg, call_node->args.values) { -- 2.25.1