From a78bffc3a8ca4dfe6ca985223e38d28608184c52 Mon Sep 17 00:00:00 2001 From: rtk0c Date: Mon, 18 Jul 2022 10:13:21 -0700 Subject: Changeset: 86 Fix generated enum metadata using the wrong identifiers (dangling pointer not fixed up after storing DeclEnum object into model) --- source/20-codegen-compiler/main.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'source') diff --git a/source/20-codegen-compiler/main.cpp b/source/20-codegen-compiler/main.cpp index af51900..782996b 100644 --- a/source/20-codegen-compiler/main.cpp +++ b/source/20-codegen-compiler/main.cpp @@ -938,13 +938,6 @@ void ParseInputFileAndGenerate(AppState& as, CodegenLexer& /*lexingState*/ ls, s ++idx; } - // if (po.currentEnum->generating) { - // GenerateForEnum(po.headerOutput, po.sourceOutput, *po.currentEnum); - // } - if (po.currentEnum->generating) { - as.enumsToRevisit.push_back(po.currentEnum); - } - { auto decl = as.runtimeModel->AddEnum(std::move(fullname), std::move(enumDecl)); // Fix pointers @@ -952,6 +945,10 @@ void ParseInputFileAndGenerate(AppState& as, CodegenLexer& /*lexingState*/ ls, s po.currentEnumBraceDepth = po.currentBraceDepth; } + if (po.currentEnum->generating) { + as.enumsToRevisit.push_back(po.currentEnum); + } + // NOTE: we parse the whole enum at once (above code), the enum ends right here after the closing brace '}' po.currentEnum = nullptr; po.currentEnumBraceDepth = -1; -- cgit v1.2.3-70-g09d2