From c0ae4bb8f7c7547b781cbe85b7a58cfa2aedac8c Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Thu, 28 Jan 2021 08:53:34 -0800 Subject: [PATCH] Fixed comptime reflection issue with interface methods --- IDEHelper/Compiler/BfModule.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index d223e2bf..73a93e09 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -6680,16 +6680,19 @@ BfIRValue BfModule::CreateTypeData(BfType* type, Dictionary& usedStrin auto interfaceData = mBfIRBuilder->CreateConstAgg_Value(mBfIRBuilder->MapTypeInst(reflectInterfaceDataType->ToTypeInstance(), BfIRPopulateType_Full), interfaceDataVals); interfaces.push_back(interfaceData); - for (int methodIdx = 0; methodIdx < (int)interface.mInterfaceType->mMethodInstanceGroups.size(); methodIdx++) + if (!mIsComptimeModule) { - auto ifaceMethodGroup = &interface.mInterfaceType->mMethodInstanceGroups[methodIdx]; - if (ifaceMethodGroup->mExplicitlyReflected) + for (int methodIdx = 0; methodIdx < (int)interface.mInterfaceType->mMethodInstanceGroups.size(); methodIdx++) { - wantsIfaceMethods = true; - int tableIdx = interface.mStartInterfaceTableIdx + methodIdx; - while (tableIdx >= wantsIfaceMethod.size()) - wantsIfaceMethod.Add(false); - wantsIfaceMethod[tableIdx] = true; + auto ifaceMethodGroup = &interface.mInterfaceType->mMethodInstanceGroups[methodIdx]; + if (ifaceMethodGroup->mExplicitlyReflected) + { + wantsIfaceMethods = true; + int tableIdx = interface.mStartInterfaceTableIdx + methodIdx; + while (tableIdx >= wantsIfaceMethod.size()) + wantsIfaceMethod.Add(false); + wantsIfaceMethod[tableIdx] = true; + } } } }