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

Method ResolveInnerType

IDEHelper/Compiler/BfModuleTypeUtils.cpp:8613–8791  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8611}
8612
8613BfType* BfModule::ResolveInnerType(BfType* outerType, BfAstNode* typeRef, BfPopulateType populateType, bool ignoreErrors, int numGenericArgs, BfResolveTypeRefFlags resolveFlags)
8614{
8615 BfTypeDef* nestedTypeDef = NULL;
8616
8617 if (outerType->IsBoxed())
8618 outerType = outerType->GetUnderlyingType();
8619
8620 BfNamedTypeReference* namedTypeRef = NULL;
8621 BfGenericInstanceTypeRef* genericTypeRef = NULL;
8622 BfDirectStrTypeReference* directStrTypeRef = NULL;
8623 BfInlineTypeReference* inlineTypeRef = NULL;
8624 BfIdentifierNode* identifierNode = NULL;
8625 if ((namedTypeRef = BfNodeDynCast<BfNamedTypeReference>(typeRef)))
8626 {
8627 //TYPEDEF nestedTypeDef = namedTypeRef->mTypeDef;
8628 }
8629 else if ((genericTypeRef = BfNodeDynCast<BfGenericInstanceTypeRef>(typeRef)))
8630 {
8631 namedTypeRef = BfNodeDynCast<BfNamedTypeReference>(genericTypeRef->mElementType);
8632 //TYPEDEF nestedTypeDef = namedTypeRef->mTypeDef;
8633 }
8634 else if ((identifierNode = BfNodeDynCast<BfIdentifierNode>(typeRef)))
8635 {
8636 //TYPEDEF nestedTypeDef = namedTypeRef->mTypeDef;
8637 }
8638 else if ((directStrTypeRef = BfNodeDynCast<BfDirectStrTypeReference>(typeRef)))
8639 {
8640 //
8641 }
8642 else if ((inlineTypeRef = BfNodeDynCastExact<BfInlineTypeReference>(typeRef)))
8643 {
8644 //
8645 }
8646
8647 BF_ASSERT((identifierNode != NULL) || (namedTypeRef != NULL) || (directStrTypeRef != NULL) || (inlineTypeRef != NULL));
8648
8649 auto usedOuterType = outerType;
8650 if (nestedTypeDef == NULL)
8651 {
8652 String tempStr;
8653 StringView findName;
8654 if (namedTypeRef != NULL)
8655 findName = namedTypeRef->mNameNode->ToStringView();
8656 else if (identifierNode != NULL)
8657 findName = identifierNode->ToStringView();
8658 else if (inlineTypeRef != NULL)
8659 findName = inlineTypeRef->mTypeDeclaration->mAnonymousName;
8660 else
8661 findName = directStrTypeRef->mTypeName;
8662
8663 if (!findName.Contains('.'))
8664 {
8665 if (outerType->IsTypeInstance())
8666 {
8667 auto outerTypeInstance = outerType->ToTypeInstance();
8668
8669 for (int pass = 0; pass < 2; pass++)
8670 {

Callers 1

DoMemberReferenceMethod · 0.80

Calls 15

CheckProtectionFunction · 0.85
FailFunction · 0.85
TypeToStringFunction · 0.85
GetLatestMethod · 0.80
AppendMethod · 0.80
IsBoxedMethod · 0.45
GetUnderlyingTypeMethod · 0.45
ToStringViewMethod · 0.45
ContainsMethod · 0.45
IsTypeInstanceMethod · 0.45
ToTypeInstanceMethod · 0.45

Tested by

no test coverage detected