From a996e196456b65dc02747b45ca5ca8678d9ab2a1 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sat, 18 Mar 2023 15:02:20 -0500 Subject: [PATCH] added: '$' in front of polymorphic variables --- compiler/include/astnodes.h | 2 ++ compiler/src/doc.c | 3 +++ compiler/src/parser.c | 1 + 3 files changed, 6 insertions(+) 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, '/')) { -- 2.25.1