1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-09 03:52:19 +02:00

Fixed null check for mAttributeTypeRef

This commit is contained in:
Brian Fiete 2020-05-17 07:04:40 -07:00
parent 3d3cde906b
commit fb96595ac3

View file

@ -4281,31 +4281,34 @@ void BfCompiler::GetSymbolReferences()
while (attrib != NULL) while (attrib != NULL)
{ {
String attrName = attrib->mAttributeTypeRef->ToString(); if (attrib->mAttributeTypeRef != NULL)
BfType* attrType = NULL;
BfAtomComposite nameComposite;
if (mSystem->ParseAtomComposite(attrName + "Attribute", nameComposite))
{ {
BfTypeDef* attrTypeDef = module->FindTypeDefRaw(nameComposite, 0, replaceTypeInst, declaringType, NULL); String attrName = attrib->mAttributeTypeRef->ToString();
if (attrTypeDef != NULL) BfType* attrType = NULL;
{
mResolvePassData->HandleTypeReference(attrib->mAttributeTypeRef, attrTypeDef);
attrTypeDef->PopulateMemberSets(); BfAtomComposite nameComposite;
for (auto argExpr : attrib->mArguments) if (mSystem->ParseAtomComposite(attrName + "Attribute", nameComposite))
{
BfTypeDef* attrTypeDef = module->FindTypeDefRaw(nameComposite, 0, replaceTypeInst, declaringType, NULL);
if (attrTypeDef != NULL)
{ {
if (auto assignExpr = BfNodeDynCast<BfAssignmentExpression>(argExpr)) mResolvePassData->HandleTypeReference(attrib->mAttributeTypeRef, attrTypeDef);
attrTypeDef->PopulateMemberSets();
for (auto argExpr : attrib->mArguments)
{ {
auto propName = assignExpr->mLeft->ToString(); if (auto assignExpr = BfNodeDynCast<BfAssignmentExpression>(argExpr))
BfMemberSetEntry* propDefEntry;
if (attrTypeDef->mPropertySet.TryGetWith(propName, &propDefEntry))
{ {
mResolvePassData->HandlePropertyReference(assignExpr->mLeft, attrTypeDef, (BfPropertyDef*)propDefEntry->mMemberDef); auto propName = assignExpr->mLeft->ToString();
} BfMemberSetEntry* propDefEntry;
else if (attrTypeDef->mFieldSet.TryGetWith(propName, &propDefEntry)) if (attrTypeDef->mPropertySet.TryGetWith(propName, &propDefEntry))
{ {
mResolvePassData->HandleFieldReference(assignExpr->mLeft, attrTypeDef, (BfFieldDef*)propDefEntry->mMemberDef); mResolvePassData->HandlePropertyReference(assignExpr->mLeft, attrTypeDef, (BfPropertyDef*)propDefEntry->mMemberDef);
}
else if (attrTypeDef->mFieldSet.TryGetWith(propName, &propDefEntry))
{
mResolvePassData->HandleFieldReference(assignExpr->mLeft, attrTypeDef, (BfFieldDef*)propDefEntry->mMemberDef);
}
} }
} }
} }