small bugfix with enum values being of the wrong type
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 30 Dec 2020 15:33:23 +0000 (09:33 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 30 Dec 2020 15:33:23 +0000 (09:33 -0600)
onyx
progs/odin_example.onyx
src/onyxsymres.c

diff --git a/onyx b/onyx
index 08c9d5cac8971de518df7f8e7d0006c0fb02ba3c..4d1f1a5c10d23e7c7f443e998ec27d30953d3c7a 100755 (executable)
Binary files a/onyx and b/onyx differ
index 090eadd6355798bee511956642291780832c00a6..2642bbc2b18990fd2189cbac35e1b043543f8555 100644 (file)
@@ -94,6 +94,7 @@ main :: proc (args: [] cstr) {
     printf("%f\n", a.float);
 
     e := Entity.{ Vec2.{ 1, 2 } };
+    printf("Entity(%i, %i)\n", e.x, e.y);
 
     {
         foo : [5] [2] u32;
index fef857b5378b98d0e0a30aafec7aae117c1c0c97..6718dfb64e5cc8f661bb940c559806b24d4a003c 100644 (file)
@@ -851,6 +851,8 @@ static void symres_enum(AstEnumType* enum_node) {
     enum_node->backing_type = type_build_from_ast(semstate.allocator, enum_node->backing);
     enum_node->scope = scope_create(semstate.node_allocator, NULL, enum_node->token->pos);
 
+    type_build_from_ast(semstate.node_allocator, (AstType *) enum_node);
+
     u64 next_assign_value = (enum_node->flags & Ast_Flag_Enum_Is_Flags) ? 1 : 0;
     bh_arr_each(AstEnumValue *, value, enum_node->values) {
         symbol_introduce(enum_node->scope, (*value)->token, (AstNode *) *value);
@@ -872,9 +874,9 @@ static void symres_enum(AstEnumType* enum_node) {
         } else {
             AstNumLit* num = onyx_ast_node_new(semstate.node_allocator, sizeof(AstNumLit), Ast_Kind_NumLit);
             num->value.l = next_assign_value;
-            num->type_node = enum_node->backing;
-            num->type = enum_node->backing_type;
             num->flags |= Ast_Flag_Comptime;
+            num->type = enum_node->etcache;
+            
             (*value)->value = num;
         }