added: '$' in front of polymorphic variables
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Sat, 18 Mar 2023 20:02:20 +0000 (15:02 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 24 Mar 2023 01:50:10 +0000 (20:50 -0500)
compiler/include/astnodes.h
compiler/src/doc.c
compiler/src/parser.c

index 0282cb0e01c2f8c8a441dc3d8e01ad756098853d..6fcdab57c2079c393e08c3f41a6cc02136da28f1 100644 (file)
@@ -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 {
index 5c56d8c6632b68cd9ae2937d2ddc95debcb547a2..2bdff0e8cc9d3184e2b00e2398d1883c72db0cf5 100644 (file)
@@ -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;
     }
index 679fc79b5dc351fcc26e662596c2c547b4a1c247..422927ab317ab1e1243896c8e3f3b4ae2daea807 100644 (file)
@@ -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, '/')) {