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:
parent
3d3cde906b
commit
fb96595ac3
1 changed files with 23 additions and 20 deletions
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue