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

Method GenerateModuleName_TypeInst

IDEHelper/Compiler/BfContext.cpp:2837–2884  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2835}
2836
2837void BfContext::GenerateModuleName_TypeInst(BfTypeInstance* typeInst, StringImpl& name)
2838{
2839 auto resolveModule = typeInst->mIsReified ? mScratchModule : mUnreifiedModule;
2840 auto outerType = resolveModule->GetOuterType(typeInst);
2841 int startGenericIdx = 0;
2842 if (outerType != NULL)
2843 {
2844 startGenericIdx = (int)outerType->mTypeDef->mGenericParamDefs.size();
2845 GenerateModuleName_Type(outerType, name);
2846
2847 /*if ((!name.empty()) && (name[name.length() - 1] != '_'))
2848 name += '_';*/
2849 }
2850 else
2851 {
2852 for (int i = 0; i < typeInst->mTypeDef->mNamespace.mSize; i++)
2853 {
2854 auto atom = typeInst->mTypeDef->mNamespace.mParts[i];
2855 if ((!name.empty()) && (name[name.length() - 1] != '_'))
2856 name += '_';
2857 name += atom->mString;
2858 }
2859 }
2860
2861 if ((!name.empty()) && (name[name.length() - 1] != '_'))
2862 name += '_';
2863
2864 if (typeInst->mTypeDef->IsGlobalsContainer())
2865 name += "GLOBALS_";
2866 else
2867 name += typeInst->mTypeDef->mName->mString;
2868
2869 if (typeInst->IsClosure())
2870 {
2871 auto closureType = (BfClosureType*)typeInst;
2872 name += closureType->mNameAdd;
2873 return;
2874 }
2875
2876 if (typeInst->mGenericTypeInfo != NULL)
2877 {
2878 for (int genericIdx = startGenericIdx; genericIdx < (int)typeInst->mGenericTypeInfo->mTypeGenericArguments.size(); genericIdx++)
2879 {
2880 auto type = typeInst->mGenericTypeInfo->mTypeGenericArguments[genericIdx];
2881 GenerateModuleName_Type(type, name);
2882 }
2883 }
2884}
2885
2886void BfContext::GenerateModuleName_Type(BfType* type, StringImpl& name)
2887{

Callers

nothing calls this directly

Calls 6

GetOuterTypeMethod · 0.80
sizeMethod · 0.45
emptyMethod · 0.45
lengthMethod · 0.45
IsGlobalsContainerMethod · 0.45
IsClosureMethod · 0.45

Tested by

no test coverage detected