From 13cb637cb435fb059a4c4cb2f9e15496e34f516f Mon Sep 17 00:00:00 2001 From: Christoffer Lerno Date: Thu, 8 Dec 2022 19:48:36 +0100 Subject: [PATCH] Fix missing early resolution on demand of parameterized types. --- src/compiler/sema_decls.c | 17 +++++++++-------- src/version.h | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/compiler/sema_decls.c b/src/compiler/sema_decls.c index a5fc6f2fe..7786edbd1 100644 --- a/src/compiler/sema_decls.c +++ b/src/compiler/sema_decls.c @@ -453,14 +453,14 @@ static bool sema_analyse_struct_union(SemaContext *context, Decl *decl) if (decl->name) { Decl** state = sema_decl_stack_store(); - if (decl->decl_kind == DECL_UNION) - { - success = sema_analyse_union_members(context, decl, decl->strukt.members); - } - else - { - success = sema_analyse_struct_members(context, decl, decl->strukt.members); - } + if (decl->decl_kind == DECL_UNION) + { + success = sema_analyse_union_members(context, decl, decl->strukt.members); + } + else + { + success = sema_analyse_struct_members(context, decl, decl->strukt.members); + } sema_decl_stack_restore(state); } else @@ -2719,6 +2719,7 @@ static bool sema_analyse_parameterized_define(SemaContext *c, Decl *decl) { Type *type = type_new(TYPE_TYPEDEF, decl->name); decl->type = type; + type->decl = symbol; decl->decl_kind = DECL_TYPEDEF; type->canonical = symbol->type->canonical; return true; diff --git a/src/version.h b/src/version.h index a89ecbedb..671b86583 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define COMPILER_VERSION "0.3.112" \ No newline at end of file +#define COMPILER_VERSION "0.3.113" \ No newline at end of file