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

Method ResolveType

IDEHelper/Compiler/BfModuleTypeUtils.cpp:9583–9613  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9581}
9582
9583BfType* BfModule::ResolveType(BfType* lookupType, BfPopulateType populateType, BfResolveTypeRefFlags resolveFlags)
9584{
9585 BfResolvedTypeSet::LookupContext lookupCtx;
9586 lookupCtx.mModule = this;
9587 lookupCtx.mResolveFlags = resolveFlags;
9588 BfResolvedTypeSet::EntryRef resolvedEntry;
9589 bool inserted = mContext->mResolvedTypes.Insert(lookupType, &lookupCtx, &resolvedEntry);
9590
9591 if (!resolvedEntry)
9592 return NULL;
9593
9594 if (!inserted)
9595 {
9596 auto resolvedTypeRef = resolvedEntry->mValue;
9597 PopulateType(resolvedTypeRef, populateType);
9598 return resolvedTypeRef;
9599 }
9600
9601 if (lookupType->IsGenericTypeInstance())
9602 CheckUnspecializedGenericType((BfTypeInstance*)lookupType, populateType);
9603
9604 if (lookupType->IsTuple())
9605 {
9606 auto tupleType = (BfTupleType*)lookupType;
9607 tupleType->Finish();
9608 }
9609
9610 resolvedEntry->mValue = lookupType;
9611 InitType(lookupType, populateType);
9612 return lookupType;
9613}
9614
9615bool BfModule::IsUnboundGeneric(BfType* type)
9616{

Callers 2

VisitMethod · 0.80
GetLambdaInstanceMethod · 0.80

Calls 4

InsertMethod · 0.45
IsGenericTypeInstanceMethod · 0.45
IsTupleMethod · 0.45
FinishMethod · 0.45

Tested by

no test coverage detected