1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 11:38:21 +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)
{
String attrName = attrib->mAttributeTypeRef->ToString();
BfType* attrType = NULL;
BfAtomComposite nameComposite;
if (mSystem->ParseAtomComposite(attrName + "Attribute", nameComposite))
if (attrib->mAttributeTypeRef != NULL)
{
BfTypeDef* attrTypeDef = module->FindTypeDefRaw(nameComposite, 0, replaceTypeInst, declaringType, NULL);
if (attrTypeDef != NULL)
{
mResolvePassData->HandleTypeReference(attrib->mAttributeTypeRef, attrTypeDef);
String attrName = attrib->mAttributeTypeRef->ToString();
BfType* attrType = NULL;
attrTypeDef->PopulateMemberSets();
for (auto argExpr : attrib->mArguments)
BfAtomComposite nameComposite;
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();
BfMemberSetEntry* propDefEntry;
if (attrTypeDef->mPropertySet.TryGetWith(propName, &propDefEntry))
if (auto assignExpr = BfNodeDynCast<BfAssignmentExpression>(argExpr))
{
mResolvePassData->HandlePropertyReference(assignExpr->mLeft, attrTypeDef, (BfPropertyDef*)propDefEntry->mMemberDef);
}
else if (attrTypeDef->mFieldSet.TryGetWith(propName, &propDefEntry))
{
mResolvePassData->HandleFieldReference(assignExpr->mLeft, attrTypeDef, (BfFieldDef*)propDefEntry->mMemberDef);
auto propName = assignExpr->mLeft->ToString();
BfMemberSetEntry* propDefEntry;
if (attrTypeDef->mPropertySet.TryGetWith(propName, &propDefEntry))
{
mResolvePassData->HandlePropertyReference(assignExpr->mLeft, attrTypeDef, (BfPropertyDef*)propDefEntry->mMemberDef);
}
else if (attrTypeDef->mFieldSet.TryGetWith(propName, &propDefEntry))
{
mResolvePassData->HandleFieldReference(assignExpr->mLeft, attrTypeDef, (BfFieldDef*)propDefEntry->mMemberDef);
}
}
}
}