| 8611 | } |
| 8612 | |
| 8613 | BfType* 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 | { |
no test coverage detected