diff --git a/IDEHelper/Compiler/BfCompiler.cpp b/IDEHelper/Compiler/BfCompiler.cpp index f02d1518..48d9ac1f 100644 --- a/IDEHelper/Compiler/BfCompiler.cpp +++ b/IDEHelper/Compiler/BfCompiler.cpp @@ -1150,7 +1150,7 @@ void BfCompiler::CreateVData(BfVDataModule* bfModule) vdataTypeList.push_back(type); - vdataHashCtx.Mixin(type->mTypeId); + vdataHashCtx.Mixin(type->mTypeId); BF_ASSERT((type != NULL) || (mPassInstance->HasFailed())); if ((type != NULL) && (typeInst != NULL)) @@ -1161,6 +1161,8 @@ void BfCompiler::CreateVData(BfVDataModule* bfModule) if (type->IsInterface()) vdataHashCtx.Mixin(typeInst->mSlotNum); + vdataHashCtx.Mixin(typeInst->mAlwaysIncludeFlags); + vdataHashCtx.Mixin(typeInst->mHasBeenInstantiated); if (!module->mIsScratchModule) { diff --git a/IDEHelper/Compiler/BfContext.cpp b/IDEHelper/Compiler/BfContext.cpp index d83cd5a2..29acb5f3 100644 --- a/IDEHelper/Compiler/BfContext.cpp +++ b/IDEHelper/Compiler/BfContext.cpp @@ -1002,7 +1002,15 @@ void BfContext::RebuildType(BfType* type, bool deleteOnDemandTypes, bool rebuild typeInst->ReleaseData(); type->mDefineState = BfTypeDefineState_Undefined; typeInst->mSpecializedMethodReferences.Clear(); + typeInst->mAlwaysIncludeFlags = BfAlwaysIncludeFlag_None; + typeInst->mHasBeenInstantiated = false; typeInst->mLookupResults.Clear(); + typeInst->mIsUnion = false; + typeInst->mIsCRepr = false; + typeInst->mIsPacked = false; + typeInst->mIsSplattable = false; + typeInst->mHasUnderlyingArray = false; + typeInst->mIsTypedPrimitive = false; typeInst->mMergedFieldDataCount = 0; typeInst->mTypeIncomplete = true; @@ -1010,8 +1018,7 @@ void BfContext::RebuildType(BfType* type, bool deleteOnDemandTypes, bool rebuild typeInst->mHasBeenInstantiated = false; typeInst->mHasParameterizedBase = false; typeInst->mTypeFailed = false; - typeInst->mTypeWarned = false; - typeInst->mIsSplattable = false; + typeInst->mTypeWarned = false; typeInst->mHasUnderlyingArray = false; typeInst->mHasPackingHoles = false; typeInst->mWantsGCMarking = false;