From: Brendan Hansen Date: Sat, 18 Mar 2023 20:02:20 +0000 (-0500) Subject: added: '$' in front of polymorphic variables X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=a996e196456b65dc02747b45ca5ca8678d9ab2a1;p=onyx.git added: '$' in front of polymorphic variables --- diff --git a/compiler/include/astnodes.h b/compiler/include/astnodes.h index 0282cb0e..6fcdab57 100644 --- a/compiler/include/astnodes.h +++ b/compiler/include/astnodes.h @@ -287,6 +287,8 @@ typedef enum AstFlags { Ast_Flag_Dead = BH_BIT(22), Ast_Flag_Extra_Field_Access = BH_BIT(23), + + Ast_Flag_Symbol_Is_PolyVar = BH_BIT(24), } AstFlags; typedef enum UnaryOp { diff --git a/compiler/src/doc.c b/compiler/src/doc.c index 5c56d8c6..2bdff0e8 100644 --- a/compiler/src/doc.c +++ b/compiler/src/doc.c @@ -294,6 +294,9 @@ static void write_type_node(bh_buffer *buffer, void *vnode) { case Ast_Kind_Symbol: case Ast_Kind_Param: + if (node->flags & Ast_Flag_Symbol_Is_PolyVar) + bh_buffer_write_byte(buffer, '$'); + bh_buffer_append(buffer, node->token->text, node->token->length); return; } diff --git a/compiler/src/parser.c b/compiler/src/parser.c index 679fc79b..422927ab 100644 --- a/compiler/src/parser.c +++ b/compiler/src/parser.c @@ -1799,6 +1799,7 @@ static void parse_polymorphic_variable(OnyxParser* parser, AstType*** next_inser AstNode* symbol_node = make_node(AstNode, Ast_Kind_Symbol); symbol_node->token = expect_token(parser, Token_Type_Symbol); + symbol_node->flags |= Ast_Flag_Symbol_Is_PolyVar; AstNode *implicit_interface = NULL; if (consume_token_if_next(parser, '/')) {