extern struct Expression * MoveExpContents(struct Expression * exp);
+extern struct Expression * GetNonBracketsExp(struct Expression * exp);
+
extern void FreeExpContents(struct Expression * exp);
struct TypeName;
FreeType(src);
}
}
+else if(src && src->kind == 22 && e->destType && e->destType->classObjectType)
+{
+struct Expression * nbExp = GetNonBracketsExp(e);
+
+if(nbExp->type != 11 || !IsVoidPtrCast(nbExp->__anon1.cast.typeName))
+{
+e->__anon1.cast.exp = MkExpBrackets(MkListOne(MoveExpContents(e)));
+e->type = 11;
+e->__anon1.typeName = MkTypeName(MkListOne(MkSpecifier(VOID)), QMkPtrDecl((((void *)0))));
+}
+}
}
static void InstDeclPassDeclaration(struct Declaration * decl);
FreeType(src);
}
}
+ else if(src && src.kind == intPtrType && e.destType && e.destType.classObjectType)
+ {
+ Expression nbExp = GetNonBracketsExp(e);
+ if(nbExp.type != castExp || !IsVoidPtrCast(nbExp.cast.typeName))
+ {
+ e.cast.exp = MkExpBrackets(MkListOne(MoveExpContents(e)));
+ e.type = castExp;
+ e.typeName = MkTypeName(MkListOne(MkSpecifier(VOID)), QMkPtrDecl(null));
+ }
+ }
}
static void InstDeclPassExpression(Expression exp)