MCPcopy Create free account
hub / github.com/beefytech/Beef / InitType

Method InitType

IDEHelper/Compiler/BfModuleTypeUtils.cpp:679–823  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

677}
678
679void BfModule::InitType(BfType* resolvedTypeRef, BfPopulateType populateType)
680{
681 BP_ZONE("BfModule::InitType");
682
683 if (auto depType = resolvedTypeRef->ToDependedType())
684 {
685 if ((mCurMethodInstance != NULL) && (mCurMethodInstance->mMethodInfoEx != NULL))
686 {
687 depType->mDependencyMap.mMinDependDepth = mCurMethodInstance->mMethodInfoEx->mMinDependDepth + 1;
688 }
689 else if (mCurTypeInstance != NULL)
690 {
691 depType->mDependencyMap.mMinDependDepth = mCurTypeInstance->mDependencyMap.mMinDependDepth + 1;
692 }
693 }
694
695 SetAndRestoreValue<BfTypeInstance*> prevTypeInstance(mCurTypeInstance, resolvedTypeRef->ToTypeInstance());
696 SetAndRestoreValue<BfMethodInstance*> prevMethodInstance(mCurMethodInstance, NULL);
697
698 if (mCompiler->mHotState != NULL)
699 mCompiler->mHotState->mHasNewTypes = true;
700
701 auto typeInst = resolvedTypeRef->ToTypeInstance();
702 if (typeInst != NULL)
703 {
704 CheckInjectNewRevision(typeInst);
705
706 BF_ASSERT(!typeInst->mTypeDef->IsEmitted());
707
708 if (typeInst->mBaseType != NULL)
709 BF_ASSERT((typeInst->mBaseType->mRebuildFlags & BfTypeRebuildFlag_Deleted) == 0);
710
711 if ((typeInst->mTypeDef != NULL) && (typeInst->mTypeDef->mDefState == BfTypeDef::DefState_New) &&
712 (typeInst->mTypeDef->mNextRevision == NULL))
713 {
714 mContext->HandleChangedTypeDef(typeInst->mTypeDef);
715 typeInst->mTypeDef->mDefState = BfTypeDef::DefState_Defined;
716 }
717
718 typeInst->mIsReified = mIsReified;
719
720 //BF_ASSERT(typeInst->mTypeDef->mTypeCode != BfTypeCode_Extension);
721
722 typeInst->mRevision = mCompiler->mRevision;
723 if (typeInst->mTypeDef != NULL)
724 BF_ASSERT(typeInst->mTypeDef->mDefState != BfTypeDef::DefState_Deleted);
725
726 if (resolvedTypeRef->IsTuple())
727 {
728 auto tupleType = (BfTypeInstance*)resolvedTypeRef;
729 for (int fieldIdx = 0; fieldIdx < (int)tupleType->mFieldInstances.size(); fieldIdx++)
730 {
731 auto fieldInstance = (BfFieldInstance*)&tupleType->mFieldInstances[fieldIdx];
732 // We need to make sure dependencies get set immediately since we already resolved the types
733 AddFieldDependency(typeInst, fieldInstance, fieldInstance->mResolvedType);
734 }
735 }
736 }

Callers 1

ResolveTypeRef_RefMethod · 0.80

Calls 15

TypeToStringFunction · 0.85
HandleChangedTypeDefMethod · 0.80
IsAutocompleteMethod · 0.80
UpdateCompletionMethod · 0.80
ToDependedTypeMethod · 0.45
ToTypeInstanceMethod · 0.45
IsEmittedMethod · 0.45
IsTupleMethod · 0.45
sizeMethod · 0.45
IsGenericTypeInstanceMethod · 0.45
IsReifiedMethod · 0.45
IsIntUnknownMethod · 0.45

Tested by

no test coverage detected