{
struct Expression * memberExp;
struct Expression * parentExp = (((void *)0));
+unsigned int isIndexedContainerAssignment = 0;
if(exp->__anon1.op.exp1 && exp->__anon1.op.exp1->type == 8)
{
struct __ecereNameSpace__ecere__com__Class * c = memberExp->__anon1.index.exp->expType->__anon1._class->__anon1.registered;
if(strcmp((c->templateClass ? c->templateClass : c)->name, "Array"))
+{
exp->__anon1.op.exp2 = MkExpBrackets(MkListOne(MkExpCast(MkTypeName(MkListOne(MkSpecifierName("uint64")), (((void *)0))), MkExpBrackets(MkListOne(exp->__anon1.op.exp2)))));
+isIndexedContainerAssignment = 1;
+}
ProcessExpression(memberExp);
while(memberExp && ((memberExp->type == 5 && (*memberExp->__anon1.list).count == 1) || memberExp->type == 32 || memberExp->type == 23))
{
value->tempCount = exp->tempCount;
ProcessExpression(value);
if(needAddress)
-FixReference(value, 1);
+FixReference(isIndexedContainerAssignment ? GetInnerExp(value) : value, 1);
}
FreeExpression(memberExp);
}
{
Expression memberExp;
Expression parentExp = null; // Where to take memberExp out from
+ bool isIndexedContainerAssignment = false;
// TOCHECK: See note below for this if
if(exp.op.exp1 && exp.op.exp1.type == ExpressionType::memberExp)
{
Class c = memberExp.index.exp.expType._class.registered;
if(strcmp((c.templateClass ? c.templateClass : c).name, "Array"))
+ {
exp.op.exp2 = MkExpBrackets(MkListOne(MkExpCast(MkTypeName(MkListOne(MkSpecifierName("uint64")), null), MkExpBrackets(MkListOne(exp.op.exp2)))));
+ isIndexedContainerAssignment = true;
+ }
ProcessExpression(memberExp);
value.tempCount = exp.tempCount;
ProcessExpression(value);
if(needAddress)
- FixReference(value, true);
+ FixReference(isIndexedContainerAssignment ? GetInnerExp(value) : value, true);
}
FreeExpression(memberExp);