From: Brendan Hansen Date: Wed, 19 Apr 2023 01:38:18 +0000 (-0500) Subject: added: flag for if function is lambda X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=ad16a9d01867f521ab70bd4847fc613ee56fc2e5;p=onyx.git added: flag for if function is lambda --- diff --git a/compiler/include/astnodes.h b/compiler/include/astnodes.h index 7f2c8e10..74c6b48a 100644 --- a/compiler/include/astnodes.h +++ b/compiler/include/astnodes.h @@ -292,6 +292,8 @@ typedef enum AstFlags { Ast_Flag_Poly_Call_From_Auto = BH_BIT(24), Ast_Flag_Binding_Isnt_Captured = BH_BIT(25), + + Ast_Flag_Function_Is_Lambda = BH_BIT(26) } AstFlags; typedef enum UnaryOp { diff --git a/compiler/src/checker.c b/compiler/src/checker.c index 9d30c077..ca4ceb89 100644 --- a/compiler/src/checker.c +++ b/compiler/src/checker.c @@ -2587,6 +2587,8 @@ CheckStatus check_overloaded_function(AstOverloadedFunction* ofunc) { return Check_Error; } + node->flags &= ~Ast_Flag_Function_Is_Lambda; + if (node->kind == Ast_Kind_Function) { AstFunction* func = (AstFunction *) node; diff --git a/compiler/src/parser.c b/compiler/src/parser.c index e456b8a7..423f0256 100644 --- a/compiler/src/parser.c +++ b/compiler/src/parser.c @@ -393,10 +393,12 @@ static AstTyped* parse_factor(OnyxParser* parser) { switch ((u16) parser->curr->type) { case '(': { if (parse_possible_function_definition(parser, &retval)) { + retval->flags |= Ast_Flag_Function_Is_Lambda; ENTITY_SUBMIT(retval); break; } if (parse_possible_quick_function_definition(parser, &retval)) { + retval->flags |= Ast_Flag_Function_Is_Lambda; ENTITY_SUBMIT(retval); break; } @@ -3160,6 +3162,7 @@ static AstBinding* parse_top_level_binding(OnyxParser* parser, OnyxToken* symbol if (func->intrinsic_name == NULL) func->intrinsic_name = symbol; func->name = generate_name_within_scope(parser, symbol); + func->flags &= ~Ast_Flag_Function_Is_Lambda; break; }