From 189398819573ad7349252a4439c299b268d90f34 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 2 Jan 2021 13:20:10 -0800 Subject: [PATCH] Fixed static initializer --- IDEHelper/Compiler/BfDefBuilder.cpp | 5 +++++ IDEHelper/Compiler/BfSystem.cpp | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/IDEHelper/Compiler/BfDefBuilder.cpp b/IDEHelper/Compiler/BfDefBuilder.cpp index 67489bd6..11d8a45c 100644 --- a/IDEHelper/Compiler/BfDefBuilder.cpp +++ b/IDEHelper/Compiler/BfDefBuilder.cpp @@ -1992,6 +1992,11 @@ void BfDefBuilder::FinishTypeDef(bool wantsToString) } } } + else if (method->mMethodType == BfMethodType_Init) + { + if (method->mIsStatic) + needsStaticInit = true; + } else if (method->mMethodType == BfMethodType_Dtor) { if (method->mIsStatic) diff --git a/IDEHelper/Compiler/BfSystem.cpp b/IDEHelper/Compiler/BfSystem.cpp index 6bce4b36..06bc95b6 100644 --- a/IDEHelper/Compiler/BfSystem.cpp +++ b/IDEHelper/Compiler/BfSystem.cpp @@ -2949,7 +2949,7 @@ void BfSystem::FinishCompositePartial(BfTypeDef* compositeTypeDef) bool hasInitializers = false; for (auto methodDef : partialTypeDef->mMethods) { - if (methodDef->mMethodType == BfMethodType_Init) + if ((methodDef->mMethodType == BfMethodType_Init) && (!methodDef->mIsStatic)) hasInitializers = true; auto& hasMethods = allHasMethods[isExtension ? 1 : 0][methodDef->mIsStatic ? 1 : 0]; if (methodDef->mMethodType == BfMethodType_Ctor) @@ -3012,6 +3012,12 @@ void BfSystem::FinishCompositePartial(BfTypeDef* compositeTypeDef) // methodDef->mIsMutating = true; // } + if (compositeTypeDef->mName->ToString() == "Core") + { + NOP; + } + + // Static ctor if ((allHasMethods[0][1].mCtor == 0) && (allHasMethods[1][1].mCtor > 1)) { auto methodDef = BfDefBuilder::AddMethod(nextRevision, BfMethodType_Ctor, BfProtection_Public, true, "");