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

Method SantizeTupleType

IDEHelper/Compiler/BfModuleTypeUtils.cpp:8441–8476  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8439}
8440
8441BfTypeInstance* BfModule::SantizeTupleType(BfTypeInstance* tupleType)
8442{
8443 bool needsSanitize = false;
8444 for (int fieldIdx = 0; fieldIdx < (int)tupleType->mFieldInstances.size(); fieldIdx++)
8445 {
8446 BfFieldInstance* fieldInstance = (BfFieldInstance*)&tupleType->mFieldInstances[fieldIdx];
8447 if ((fieldInstance->mResolvedType->IsVar()) || (fieldInstance->mResolvedType->IsLet()))
8448 {
8449 needsSanitize = true;
8450 break;
8451 }
8452 }
8453
8454 if (!needsSanitize)
8455 return tupleType;
8456
8457 BfTypeVector fieldTypes;
8458 Array<String> fieldNames;
8459
8460 for (int fieldIdx = 0; fieldIdx < (int)tupleType->mFieldInstances.size(); fieldIdx++)
8461 {
8462 BfFieldInstance* fieldInstance = (BfFieldInstance*)&tupleType->mFieldInstances[fieldIdx];
8463 auto fieldDef = fieldInstance->GetFieldDef();
8464 if ((fieldInstance->mResolvedType->IsVar()) || (fieldInstance->mResolvedType->IsLet()))
8465 fieldTypes.Add(mContext->mBfObjectType);
8466 else
8467 fieldTypes.Add(fieldInstance->mResolvedType);
8468 if (!fieldDef->IsUnnamedTupleField())
8469 {
8470 for (int i = 0; i < fieldIdx; i++)
8471 fieldNames.Add(String());
8472 fieldNames.Add(fieldDef->mName);
8473 }
8474 }
8475 return CreateTupleType(fieldTypes, fieldNames);
8476}
8477
8478BfRefType* BfModule::CreateRefType(BfType* resolvedTypeRef, BfRefType::RefKind refKind)
8479{

Callers 1

DoTupleAssignmentMethod · 0.80

Calls 7

StringClass · 0.85
GetFieldDefMethod · 0.80
IsUnnamedTupleFieldMethod · 0.80
sizeMethod · 0.45
IsVarMethod · 0.45
IsLetMethod · 0.45
AddMethod · 0.45

Tested by

no test coverage detected