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

Method TypeToString

IDEHelper/Compiler/BfResolvedTypeUtils.cpp:5656–5752  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5654}
5655
5656String BfTypeUtils::TypeToString(BfAstNode* typeRefNode)
5657{
5658 if (auto identifierNode = BfNodeDynCast<BfIdentifierNode>(typeRefNode))
5659 return identifierNode->ToString();
5660
5661 auto typeRef = BfNodeDynCast<BfTypeReference>(typeRefNode);
5662 if (typeRef == NULL)
5663 return "";
5664
5665 if (auto typeDefTypeRef = BfNodeDynCast<BfDirectTypeDefReference>(typeRef))
5666 {
5667 if (!typeDefTypeRef->mTypeDef->mNamespace.IsEmpty())
5668 return typeDefTypeRef->mTypeDef->mNamespace.ToString() + "." + typeDefTypeRef->mTypeDef->mName->mString;
5669 else
5670 return String(typeDefTypeRef->mTypeDef->mName->mString);
5671 }
5672
5673 if (typeRef->IsNamedTypeReference())
5674 {
5675 return typeRef->ToString();
5676 }
5677
5678 if (auto ptrType = BfNodeDynCast<BfPointerTypeRef>(typeRef))
5679 return TypeToString(ptrType->mElementType) + "*";
5680 if (auto ptrType = BfNodeDynCast<BfArrayTypeRef>(typeRef))
5681 {
5682 String name = TypeToString(ptrType->mElementType) + "[";
5683 for (int i = 1; i < ptrType->mDimensions; i++)
5684 name += ",";
5685 name += "]";
5686 return name;
5687 }
5688 if (auto genericInstanceType = BfNodeDynCast<BfGenericInstanceTypeRef>(typeRef))
5689 {
5690 String name = TypeToString(genericInstanceType->mElementType);
5691 name += "<";
5692 for (int i = 0; i < (int)genericInstanceType->mGenericArguments.size(); i++)
5693 {
5694 if (i > 0)
5695 name += ", ";
5696 name += TypeToString(genericInstanceType->mGenericArguments[i]);
5697 }
5698 name += ">";
5699 return name;
5700 }
5701 if (auto genericParamTypeRef = BfNodeDynCast<BfGenericParamTypeRef>(typeRef))
5702 {
5703 if (genericParamTypeRef->mGenericParamKind == BfGenericParamKind_Method)
5704 return StrFormat("@M%d", genericParamTypeRef->mGenericParamIdx);
5705 return StrFormat("@T%d", genericParamTypeRef->mGenericParamIdx);
5706 }
5707 if (auto qualifiedTypeRef = BfNodeDynCast<BfQualifiedTypeReference>(typeRef))
5708 {
5709 return TypeToString(qualifiedTypeRef->mLeft) + "." + TypeToString(qualifiedTypeRef->mRight);
5710 }
5711 if (auto refTypeRef = BfNodeDynCast<BfRefTypeRef>(typeRef))
5712 {
5713 String str = BfTokenToString(refTypeRef->mRefToken->GetToken());

Callers 2

GetFullNameMethod · 0.45
ReportMemoryMethod · 0.45

Calls 8

StringClass · 0.85
TypeToStringFunction · 0.85
IsNamedTypeReferenceMethod · 0.80
GetTokenMethod · 0.80
ToStringMethod · 0.45
IsEmptyMethod · 0.45
sizeMethod · 0.45
IsGlobalsContainerMethod · 0.45

Tested by

no test coverage detected