extern struct __ecereNameSpace__ecere__com__Property * __ecereProp_Type_specConst;
+unsigned int reachedPass15;
+
extern unsigned int memoryGuard;
struct __ecereNameSpace__ecere__sys__OldList
{
char temp[100];
-if(result > (unsigned short)32767)
+if(result > 32767)
sprintf(temp, "0x%X", (int)result);
else
sprintf(temp, "%d", (int)result);
{
char temp[100];
-if(result > (char)0 && isprint(result))
+if(result > 0 && isprint(result))
sprintf(temp, "'%c'", result);
-else if(result < (char)0)
+else if(result < 0)
sprintf(temp, "%d", (int)result);
else
sprintf(temp, "0x%X", (unsigned char)result);
extern void FreeExpContents(struct Expression * exp);
+extern struct Expression * GetNonBracketsExp(struct Expression * exp);
+
extern struct Expression * CopyExpression(struct Expression * exp);
extern struct Expression * MkExpBrackets(struct __ecereNameSpace__ecere__sys__OldList * expressions);
-extern struct Expression * GetNonBracketsExp(struct Expression * exp);
-
extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
char * name;
char * typeName;
struct __ecereNameSpace__ecere__com__Class * thisClassFrom;
+int promotedFrom;
int classObjectType;
int alignment;
unsigned int offset;
int bitFieldCount;
int count;
+int bitMemberSize;
unsigned int isSigned : 1;
unsigned int constant : 1;
unsigned int truth : 1;
unsigned int casted : 1;
unsigned int pointerAlignment : 1;
unsigned int isLong : 1;
+unsigned int signedBeforePromotion : 1;
} ecere_gcc_struct;
struct Specifier
short value2 = op2->__anon1.s;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintShort((op1->__anon1.s + value2));
+exp->__anon1.__anon2.string = PrintShort((short)(op1->__anon1.s + value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->__anon1.us;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUShort((op1->__anon1.us + value2));
+exp->__anon1.__anon2.string = PrintUShort((unsigned short)(op1->__anon1.us + value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->__anon1.c;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintChar((op1->__anon1.c + value2));
+exp->__anon1.__anon2.string = PrintChar((char)(op1->__anon1.c + value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->__anon1.uc;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUChar((op1->__anon1.uc + value2));
+exp->__anon1.__anon2.string = PrintUChar((unsigned char)(op1->__anon1.uc + value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->__anon1.s;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintShort((op1->__anon1.s - value2));
+exp->__anon1.__anon2.string = PrintShort((short)(op1->__anon1.s - value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->__anon1.us;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUShort((op1->__anon1.us - value2));
+exp->__anon1.__anon2.string = PrintUShort((unsigned short)(op1->__anon1.us - value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->__anon1.c;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintChar((op1->__anon1.c - value2));
+exp->__anon1.__anon2.string = PrintChar((char)(op1->__anon1.c - value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->__anon1.uc;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUChar((op1->__anon1.uc - value2));
+exp->__anon1.__anon2.string = PrintUChar((unsigned char)(op1->__anon1.uc - value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->__anon1.s;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintShort((op1->__anon1.s * value2));
+exp->__anon1.__anon2.string = PrintShort((short)(op1->__anon1.s * value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->__anon1.us;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUShort((op1->__anon1.us * value2));
+exp->__anon1.__anon2.string = PrintUShort((unsigned short)(op1->__anon1.us * value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->__anon1.c;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintChar((op1->__anon1.c * value2));
+exp->__anon1.__anon2.string = PrintChar((char)(op1->__anon1.c * value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->__anon1.uc;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUChar((op1->__anon1.uc * value2));
+exp->__anon1.__anon2.string = PrintUChar((unsigned char)(op1->__anon1.uc * value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->__anon1.i;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintInt(value2 ? (op1->__anon1.i / value2) : 0);
+exp->__anon1.__anon2.string = PrintInt(value2 ? ((op1->__anon1.i / value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->__anon1.ui;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUInt(value2 ? (op1->__anon1.ui / value2) : 0);
+exp->__anon1.__anon2.string = PrintUInt(value2 ? ((op1->__anon1.ui / value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
long long value2 = op2->__anon1.i64;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintInt64(value2 ? (op1->__anon1.i64 / value2) : 0);
+exp->__anon1.__anon2.string = PrintInt64(value2 ? ((op1->__anon1.i64 / value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->__anon1.ui64;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUInt64(value2 ? (op1->__anon1.ui64 / value2) : 0);
+exp->__anon1.__anon2.string = PrintUInt64(value2 ? ((op1->__anon1.ui64 / value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->__anon1.s;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintShort(value2 ? (op1->__anon1.s / value2) : (short)0);
+exp->__anon1.__anon2.string = PrintShort(value2 ? ((short)(op1->__anon1.s / value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->__anon1.us;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUShort(value2 ? (op1->__anon1.us / value2) : (unsigned short)0);
+exp->__anon1.__anon2.string = PrintUShort(value2 ? ((unsigned short)(op1->__anon1.us / value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->__anon1.c;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintChar(value2 ? (op1->__anon1.c / value2) : (char)0);
+exp->__anon1.__anon2.string = PrintChar(value2 ? ((char)(op1->__anon1.c / value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->__anon1.uc;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUChar(value2 ? (op1->__anon1.uc / value2) : (unsigned char)0);
+exp->__anon1.__anon2.string = PrintUChar(value2 ? ((unsigned char)(op1->__anon1.uc / value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->__anon1.f;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintFloat(op1->__anon1.f / value2);
+exp->__anon1.__anon2.string = PrintFloat((float)(op1->__anon1.f / value2));
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->__anon1.d;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintDouble(op1->__anon1.d / value2);
+exp->__anon1.__anon2.string = PrintDouble((double)(op1->__anon1.d / value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->__anon1.i;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintInt(value2 ? (op1->__anon1.i % value2) : 0);
+exp->__anon1.__anon2.string = PrintInt(value2 ? ((op1->__anon1.i % value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->__anon1.ui;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUInt(value2 ? (op1->__anon1.ui % value2) : 0);
+exp->__anon1.__anon2.string = PrintUInt(value2 ? ((op1->__anon1.ui % value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
long long value2 = op2->__anon1.i64;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintInt64(value2 ? (op1->__anon1.i64 % value2) : 0);
+exp->__anon1.__anon2.string = PrintInt64(value2 ? ((op1->__anon1.i64 % value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->__anon1.ui64;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUInt64(value2 ? (op1->__anon1.ui64 % value2) : 0);
+exp->__anon1.__anon2.string = PrintUInt64(value2 ? ((op1->__anon1.ui64 % value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->__anon1.s;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintShort(value2 ? (op1->__anon1.s % value2) : (short)0);
+exp->__anon1.__anon2.string = PrintShort(value2 ? ((short)(op1->__anon1.s % value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->__anon1.us;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUShort(value2 ? (op1->__anon1.us % value2) : (unsigned short)0);
+exp->__anon1.__anon2.string = PrintUShort(value2 ? ((unsigned short)(op1->__anon1.us % value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->__anon1.c;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintChar(value2 ? (op1->__anon1.c % value2) : (char)0);
+exp->__anon1.__anon2.string = PrintChar(value2 ? ((char)(op1->__anon1.c % value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->__anon1.uc;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUChar(value2 ? (op1->__anon1.uc % value2) : (unsigned char)0);
+exp->__anon1.__anon2.string = PrintUChar(value2 ? ((unsigned char)(op1->__anon1.uc % value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->__anon1.i;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintInt(value2 ? (op1->__anon1.i /= value2) : 0);
+exp->__anon1.__anon2.string = PrintInt(value2 ? ((op1->__anon1.i /= value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->__anon1.ui;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUInt(value2 ? (op1->__anon1.ui /= value2) : 0);
+exp->__anon1.__anon2.string = PrintUInt(value2 ? ((op1->__anon1.ui /= value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
long long value2 = op2->__anon1.i64;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintInt64(value2 ? (op1->__anon1.i64 /= value2) : 0);
+exp->__anon1.__anon2.string = PrintInt64(value2 ? ((op1->__anon1.i64 /= value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->__anon1.ui64;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUInt64(value2 ? (op1->__anon1.ui64 /= value2) : 0);
+exp->__anon1.__anon2.string = PrintUInt64(value2 ? ((op1->__anon1.ui64 /= value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->__anon1.s;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintShort(value2 ? (op1->__anon1.s /= value2) : (short)0);
+exp->__anon1.__anon2.string = PrintShort(value2 ? ((op1->__anon1.s /= value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->__anon1.us;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUShort(value2 ? (op1->__anon1.us /= value2) : (unsigned short)0);
+exp->__anon1.__anon2.string = PrintUShort(value2 ? ((op1->__anon1.us /= value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->__anon1.c;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintChar(value2 ? (op1->__anon1.c /= value2) : (char)0);
+exp->__anon1.__anon2.string = PrintChar(value2 ? ((op1->__anon1.c /= value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->__anon1.uc;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUChar(value2 ? (op1->__anon1.uc /= value2) : (unsigned char)0);
+exp->__anon1.__anon2.string = PrintUChar(value2 ? ((op1->__anon1.uc /= value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
float value2 = op2->__anon1.f;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintFloat(op1->__anon1.f /= value2);
+exp->__anon1.__anon2.string = PrintFloat((float)(op1->__anon1.f /= value2));
if(!exp->expType)
{
exp->expType = op1->type;
double value2 = op2->__anon1.d;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintDouble(op1->__anon1.d /= value2);
+exp->__anon1.__anon2.string = PrintDouble((double)(op1->__anon1.d /= value2));
if(!exp->expType)
{
exp->expType = op1->type;
int value2 = op2->__anon1.i;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintInt(value2 ? (op1->__anon1.i %= value2) : 0);
+exp->__anon1.__anon2.string = PrintInt(value2 ? ((op1->__anon1.i %= value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
unsigned int value2 = op2->__anon1.ui;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUInt(value2 ? (op1->__anon1.ui %= value2) : 0);
+exp->__anon1.__anon2.string = PrintUInt(value2 ? ((op1->__anon1.ui %= value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
long long value2 = op2->__anon1.i64;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintInt64(value2 ? (op1->__anon1.i64 %= value2) : 0);
+exp->__anon1.__anon2.string = PrintInt64(value2 ? ((op1->__anon1.i64 %= value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
uint64 value2 = op2->__anon1.ui64;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUInt64(value2 ? (op1->__anon1.ui64 %= value2) : 0);
+exp->__anon1.__anon2.string = PrintUInt64(value2 ? ((op1->__anon1.ui64 %= value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->__anon1.s;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintShort(value2 ? (op1->__anon1.s %= value2) : (short)0);
+exp->__anon1.__anon2.string = PrintShort(value2 ? ((op1->__anon1.s %= value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->__anon1.us;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUShort(value2 ? (op1->__anon1.us %= value2) : (unsigned short)0);
+exp->__anon1.__anon2.string = PrintUShort(value2 ? ((op1->__anon1.us %= value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->__anon1.c;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintChar(value2 ? (op1->__anon1.c %= value2) : (char)0);
+exp->__anon1.__anon2.string = PrintChar(value2 ? ((op1->__anon1.c %= value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->__anon1.uc;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUChar(value2 ? (op1->__anon1.uc %= value2) : (unsigned char)0);
+exp->__anon1.__anon2.string = PrintUChar(value2 ? ((op1->__anon1.uc %= value2)) : 0);
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->__anon1.s;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintShort((op1->__anon1.s & value2));
+exp->__anon1.__anon2.string = PrintShort((short)(op1->__anon1.s & value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->__anon1.us;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUShort((op1->__anon1.us & value2));
+exp->__anon1.__anon2.string = PrintUShort((unsigned short)(op1->__anon1.us & value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->__anon1.c;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintChar((op1->__anon1.c & value2));
+exp->__anon1.__anon2.string = PrintChar((char)(op1->__anon1.c & value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->__anon1.uc;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUChar((op1->__anon1.uc & value2));
+exp->__anon1.__anon2.string = PrintUChar((unsigned char)(op1->__anon1.uc & value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->__anon1.s;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintShort((op1->__anon1.s | value2));
+exp->__anon1.__anon2.string = PrintShort((short)(op1->__anon1.s | value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->__anon1.us;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUShort((op1->__anon1.us | value2));
+exp->__anon1.__anon2.string = PrintUShort((unsigned short)(op1->__anon1.us | value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->__anon1.c;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintChar((op1->__anon1.c | value2));
+exp->__anon1.__anon2.string = PrintChar((char)(op1->__anon1.c | value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->__anon1.uc;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUChar((op1->__anon1.uc | value2));
+exp->__anon1.__anon2.string = PrintUChar((unsigned char)(op1->__anon1.uc | value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->__anon1.s;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintShort((op1->__anon1.s ^ value2));
+exp->__anon1.__anon2.string = PrintShort((short)(op1->__anon1.s ^ value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->__anon1.us;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUShort((op1->__anon1.us ^ value2));
+exp->__anon1.__anon2.string = PrintUShort((unsigned short)(op1->__anon1.us ^ value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->__anon1.c;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintChar((op1->__anon1.c ^ value2));
+exp->__anon1.__anon2.string = PrintChar((char)(op1->__anon1.c ^ value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->__anon1.uc;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUChar((op1->__anon1.uc ^ value2));
+exp->__anon1.__anon2.string = PrintUChar((unsigned char)(op1->__anon1.uc ^ value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->__anon1.s;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintShort((op1->__anon1.s << value2));
+exp->__anon1.__anon2.string = PrintShort((short)(op1->__anon1.s << value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->__anon1.us;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUShort((op1->__anon1.us << value2));
+exp->__anon1.__anon2.string = PrintUShort((unsigned short)(op1->__anon1.us << value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->__anon1.c;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintChar((op1->__anon1.c << value2));
+exp->__anon1.__anon2.string = PrintChar((char)(op1->__anon1.c << value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->__anon1.uc;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUChar((op1->__anon1.uc << value2));
+exp->__anon1.__anon2.string = PrintUChar((unsigned char)(op1->__anon1.uc << value2));
if(!exp->expType)
{
exp->expType = op1->type;
short value2 = op2->__anon1.s;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintShort((op1->__anon1.s >> value2));
+exp->__anon1.__anon2.string = PrintShort((short)(op1->__anon1.s >> value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned short value2 = op2->__anon1.us;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUShort((op1->__anon1.us >> value2));
+exp->__anon1.__anon2.string = PrintUShort((unsigned short)(op1->__anon1.us >> value2));
if(!exp->expType)
{
exp->expType = op1->type;
char value2 = op2->__anon1.c;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintChar((op1->__anon1.c >> value2));
+exp->__anon1.__anon2.string = PrintChar((char)(op1->__anon1.c >> value2));
if(!exp->expType)
{
exp->expType = op1->type;
unsigned char value2 = op2->__anon1.uc;
exp->type = 2;
-exp->__anon1.__anon2.string = PrintUChar((op1->__anon1.uc >> value2));
+exp->__anon1.__anon2.string = PrintUChar((unsigned char)(op1->__anon1.uc >> value2));
if(!exp->expType)
{
exp->expType = op1->type;
break;
}
case 2:
-if(type->isSigned)
+if(exp->__anon1.__anon1.constant[0] == '\'')
+{
+op.__anon1.s = exp->__anon1.__anon1.constant[1];
+op.ops = shortOps;
+}
+else if(type->isSigned)
{
op.__anon1.s = (short)strtol(exp->__anon1.__anon1.constant, (((void *)0)), 0);
op.ops = shortOps;
break;
case 3:
case 5:
-if(type->isSigned)
+if(exp->__anon1.__anon1.constant[0] == '\'')
+{
+op.__anon1.i = exp->__anon1.__anon1.constant[1];
+op.ops = intOps;
+}
+else if(type->isSigned)
{
op.__anon1.i = strtol(exp->__anon1.__anon1.constant, (((void *)0)), 0);
op.ops = intOps;
if(symbol)
return symbol;
memcpy(nameSpace, name, c + 1);
-nameSpace[c + 1] = (char)0;
+nameSpace[c + 1] = 0;
return ScanWithNameSpace(tree, nameSpace, namePart);
}
else if(gotColon)
{
char name[1024];
-name[0] = (char)0;
+name[0] = 0;
if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)function->module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->importType != 1 && (!function->dataType || !function->dataType->dllExport))
strcpy(name, "__ecereFunction_");
FullClassNameCat(name, s, 0);
{
member->memberOffset = 0;
if(targetBits < sizeof(void *) * 8)
-member->structAlignment = (short)0;
+member->structAlignment = 0;
}
else if(targetBits < sizeof(void *) * 8)
-_class->structAlignment = (short)0;
+_class->structAlignment = 0;
if(!member && ((_class->type == 0 || _class->type == 5) || (_class->type == 1 && _class->memberOffset && _class->memberOffset > _class->base->structSize)))
_class->memberOffset = (_class->base && _class->type == 1) ? _class->base->structSize : 0;
if(!member && _class->destructionWatchOffset)
{
char type[1024];
-type[0] = (char)0;
+type[0] = 0;
PrintType(paramDest, type, 0, 1);
Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString("ec", "incompatible parameter %s (expected %s)\n", (((void *)0))), paramSource->name, type);
if(paramDestType != paramDest)
}
return external;
}
-structName[0] = (char)0;
+structName[0] = 0;
FullClassNameCat(structName, name, 0);
classSym->declaredStructSym = 1;
if(!external || (classSym->__anon1.registered->type == 5 && !skipNoHead && !curDeclarations))
curSpec->__anon1.__anon2.definitions = declarations;
else
{
-char className[1024];
-
-strcpy(className, "__ecereClass_");
-FullClassNameCat(className, classSym->string, 1);
specifiers = MkList();
declarators = MkList();
ListAdd(specifiers, MkStructOrUnion(3, MkIdentifier(structName), declarations));
external->symbol = classSym;
__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ast), external);
}
+if(reachedPass15 && !external->__anon1.declaration && classSym->__anon1.registered && classSym->__anon1.registered->type == 5)
+{
+char structName[1024];
+struct __ecereNameSpace__ecere__sys__OldList * specifiers, * declarators;
+
+structName[0] = 0;
+FullClassNameCat(structName, name, 0);
+specifiers = MkList();
+declarators = MkList();
+ListAdd(specifiers, MkStructOrUnion(3, MkIdentifier(structName), (((void *)0))));
+external->__anon1.declaration = MkDeclaration(specifiers, declarators);
+}
if(fwdDecl)
{
struct External * e = external->fwdDecl ? external->fwdDecl : external;
case 1:
if(type->isSigned)
{
-char value = (char)0;
+char value = 0;
if(GetChar(e, &value))
{
}
else
{
-unsigned char value = (unsigned char)0;
+unsigned char value = 0;
if(GetUChar(e, &value))
{
case 2:
if(type->isSigned)
{
-short value = (short)0;
+short value = 0;
if(GetShort(e, &value))
{
}
else
{
-unsigned short value = (unsigned short)0;
+unsigned short value = 0;
if(GetUShort(e, &value))
{
struct Type * source;
struct Type * realDest = dest;
struct Type * backupSourceExpType = (((void *)0));
-struct Expression * computedExp = sourceExp;
+struct Expression * nbExp = GetNonBracketsExp(sourceExp);
+struct Expression * computedExp = nbExp;
dest->refCount++;
if(sourceExp->isConstant && sourceExp->type != 2 && sourceExp->type != 0 && sourceExp->type != 11 && dest->kind == 8 && dest->__anon1._class && dest->__anon1._class->__anon1.registered && dest->__anon1._class->__anon1.registered->type == 4)
{
-computedExp = CopyExpression(sourceExp);
+computedExp = CopyExpression(nbExp);
ComputeExpression(computedExp);
}
source = sourceExp->expType;
if(dest->kind == 13 && sourceExp->type == 2 && !strtoul(sourceExp->__anon1.__anon1.constant, (((void *)0)), 0))
{
-if(computedExp != sourceExp)
+if(computedExp != nbExp)
{
FreeExpression(computedExp);
-computedExp = sourceExp;
+computedExp = nbExp;
}
FreeType(dest);
return 1;
;
if(sourceBase == destBase)
{
-if(computedExp != sourceExp)
+if(computedExp != nbExp)
{
FreeExpression(computedExp);
-computedExp = sourceExp;
+computedExp = nbExp;
}
FreeType(dest);
return 1;
else
value = -strtoull(computedExp->__anon1.op.exp2->__anon1.__anon1.constant, (((void *)0)), 0);
}
-if(computedExp != sourceExp)
+if(computedExp != nbExp)
{
FreeExpression(computedExp);
-computedExp = sourceExp;
+computedExp = nbExp;
}
if(dest->kind != 8 && source->kind == 8 && source->__anon1._class && source->__anon1._class->__anon1.registered && !strcmp(source->__anon1._class->__anon1.registered->fullName, "unichar"))
{
}
else if(dest->kind == 1 && (source->kind == 24 || source->kind == 1 || source->kind == 15 || source->kind == 2 || source->kind == 3) && (dest->isSigned ? (value >= -128 && value <= 127) : (value >= 0 && value <= 255)))
{
+if(source->kind == 3)
+return 1;
+else
+{
specs = MkList();
if(!dest->isSigned)
ListAdd(specs, MkSpecifier(UNSIGNED));
ListAdd(specs, MkSpecifier(CHAR));
}
+}
else if(dest->kind == 2 && (source->kind == 15 || source->kind == 24 || source->kind == 1 || source->kind == 2 || (source->kind == 3 && (dest->isSigned ? (value >= -32768 && value <= 32767) : (value >= 0 && value <= 65535)))))
{
+if(source->kind == 3)
+return 1;
+else
+{
specs = MkList();
if(!dest->isSigned)
ListAdd(specs, MkSpecifier(UNSIGNED));
ListAdd(specs, MkSpecifier(SHORT));
}
+}
else if(dest->kind == 3 && (source->kind == 15 || source->kind == 2 || source->kind == 24 || source->kind == 1 || source->kind == 3))
{
specs = MkList();
}
else
{
-if(computedExp != sourceExp)
+if(computedExp != nbExp)
{
FreeExpression(computedExp);
-computedExp = sourceExp;
+computedExp = nbExp;
}
while((sourceExp->type == 5 || sourceExp->type == 32) && sourceExp->__anon1.list)
sourceExp = (*sourceExp->__anon1.list).last;
DeclareFunctionUtil((((void *)0)), "eInstance_StopWatching");
DeclareFunctionUtil((((void *)0)), "eInstance_Watch");
DeclareFunctionUtil((((void *)0)), "eInstance_FireWatchers");
+reachedPass15 = 1;
for(external = (*ast).first; external; external = external->next)
{
afterExternal = curExternal = external;
(__ecereNameSpace__ecere__com__eSystem_Delete(id->string), id->string = 0);
id->string = __ecereNameSpace__ecere__sys__CopyString(function->name);
-name[0] = (char)0;
+name[0] = 0;
if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)function->module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->importType != 1 && (!function->dataType || !function->dataType->dllExport))
strcpy(name, "__ecereFunction_");
FullClassNameCat(name, id->string, 0);
break;
case LEFT_OP:
case RIGHT_OP:
-useSideType = 1;
-useDestType = 1;
break;
case '|':
case '^':
FreeType(dummy);
exp->__anon1.op.exp1->destType = (((void *)0));
}
+if(exp->__anon1.op.exp2)
+{
+if(!assign && exp->__anon1.op.exp1->expType && (exp->__anon1.op.exp1->expType->kind == 1 || exp->__anon1.op.exp1->expType->kind == 2))
+{
+struct Type * type = (type = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), type->kind = 3, type->isSigned = 1, type->refCount = 1, type->signedBeforePromotion = exp->__anon1.op.exp1->expType->isSigned, type->bitMemberSize = exp->__anon1.op.exp1->expType->bitMemberSize, type->promotedFrom = exp->__anon1.op.exp1->expType->kind, type);
+
+FreeType(exp->__anon1.op.exp1->expType);
+exp->__anon1.op.exp1->expType = type;
+}
+}
type1 = exp->__anon1.op.exp1->expType;
}
if(exp->__anon1.op.exp2)
exp->__anon1.op.exp2->opDestType = 0;
if(exp->__anon1.op.exp2->destType && exp->__anon1.op.op != '=')
exp->__anon1.op.exp2->destType->count--;
+if(!assign && (exp->__anon1.op.exp1 || exp->__anon1.op.op == '~'))
+{
+if(exp->__anon1.op.exp2->expType && (exp->__anon1.op.exp2->expType->kind == 1 || exp->__anon1.op.exp2->expType->kind == 2))
+{
+struct Type * type = (type = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), type->kind = 3, type->isSigned = 1, type->refCount = 1, type->signedBeforePromotion = exp->__anon1.op.exp2->expType->isSigned, type->bitMemberSize = exp->__anon1.op.exp2->expType->bitMemberSize, type->promotedFrom = exp->__anon1.op.exp2->expType->kind, type);
+
+FreeType(exp->__anon1.op.exp2->expType);
+exp->__anon1.op.exp2->expType = type;
+}
+}
if(assign && type1 && type1->kind == 13 && exp->__anon1.op.exp2->expType)
{
if(exp->__anon1.op.exp2->expType->kind == 23 || exp->__anon1.op.exp2->expType->kind == 22 || exp->__anon1.op.exp2->expType->kind == 4 || exp->__anon1.op.exp2->expType->kind == 3 || exp->__anon1.op.exp2->expType->kind == 2 || exp->__anon1.op.exp2->expType->kind == 1)
}
else if(exp->__anon1.op.op == '&' && !exp->__anon1.op.exp1)
exp->expType = Reference(type2);
+else if(exp->__anon1.op.op == LEFT_OP || exp->__anon1.op.op == RIGHT_OP)
+{
+if(exp->__anon1.op.exp1->expType)
+{
+exp->expType = exp->__anon1.op.exp1->expType;
+exp->expType->refCount++;
+}
+}
else if(!assign)
{
if(boolOps)
member->dataType = ProcessTypeString(member->dataTypeString, 0);
FinishTemplatesContext(context);
}
+if(exp->__anon1.member.exp->expType->kind == 8 && exp->__anon1.member.exp->expType->__anon1._class && exp->__anon1.member.exp->expType->__anon1._class->__anon1.registered && exp->__anon1.member.exp->expType->__anon1._class->__anon1.registered->type == 2)
+member->dataType->bitMemberSize = ((struct __ecereNameSpace__ecere__com__BitMember *)member)->size;
exp->expType = member->dataType;
if(member->dataType)
member->dataType->refCount++;
}
}
}
+if(!notByReference && exp->expType && exp->expType->kind == 8 && exp->expType->__anon1._class && exp->expType->__anon1._class->__anon1.registered && exp->expType->__anon1._class->__anon1.registered->type == 5 && (!exp->destType || (exp->destType->kind != 3 && exp->destType->kind != 4 && exp->destType->kind != 22 && exp->destType->kind != 23 && exp->destType->kind != 5 && exp->destType->kind != 2 && exp->destType->kind != 1 && exp->destType->kind != 24)))
+{
+exp->byReference = 1;
+}
yylloc = exp->loc;
if(exp->destType && (exp->destType->kind == 18))
;
;
else
{
+struct Expression * nbExp = GetNonBracketsExp(exp);
+unsigned int skipWarning = 0;
+int kind = exp->destType->kind;
+
+if(nbExp->type == 12 && !nbExp->destType->casted && nbExp->destType->kind == exp->destType->kind)
+skipWarning = 1;
+if((kind == 1 || kind == 2) && exp->destType->isSigned == exp->expType->signedBeforePromotion && nbExp->type == 4 && nbExp->__anon1.op.exp1 && nbExp->__anon1.op.exp2)
+{
+int op = nbExp->__anon1.op.op;
+struct Expression * nbExp1, * nbExp2;
+int from;
+
+switch(op)
+{
+case '%':
+case '/':
+nbExp1 = GetNonBracketsExp(nbExp->__anon1.op.exp1);
+from = nbExp1->expType->promotedFrom;
+if(from == 1 || (kind == 2 && from == 2))
+skipWarning = 1;
+break;
+case LEFT_OP:
+case RIGHT_OP:
+nbExp1 = GetNonBracketsExp(nbExp->__anon1.op.exp1);
+nbExp2 = GetNonBracketsExp(nbExp->__anon1.op.exp2);
+from = nbExp1->expType->promotedFrom;
+if(op == RIGHT_OP && (from == 1 || (kind == 2 && from == 2)))
+skipWarning = 1;
+else if(nbExp2->isConstant && nbExp2->type == 2 && (nbExp->__anon1.op.op == RIGHT_OP || nbExp1->expType->bitMemberSize))
+{
+int n = strtol(nbExp2->__anon1.__anon1.constant, (((void *)0)), 0);
+int s = from == 1 ? 8 : 16;
+
+if(nbExp1->expType->bitMemberSize && nbExp1->expType->bitMemberSize < s)
+s = nbExp1->expType->bitMemberSize;
+if(nbExp->__anon1.op.op == RIGHT_OP)
+s -= n;
+else
+s += n;
+if(s <= (kind == 1 ? 8 : 16))
+skipWarning = 1;
+}
+break;
+case '-':
+if(!exp->destType->isSigned)
+{
+nbExp1 = GetNonBracketsExp(nbExp->__anon1.op.exp1);
+nbExp2 = GetNonBracketsExp(nbExp->__anon1.op.exp2);
+from = nbExp2->expType->promotedFrom;
+if((from == 1 || from == 2) && nbExp1->isConstant && nbExp1->type == 2)
+{
+int n = strtol(nbExp1->__anon1.__anon1.constant, (((void *)0)), 0);
+
+if(n == (from == 1 ? 255 : 65535))
+skipWarning = 1;
+}
+}
+break;
+case '|':
+{
+int kind1, kind2;
+
+nbExp1 = GetNonBracketsExp(nbExp->__anon1.op.exp1);
+nbExp2 = GetNonBracketsExp(nbExp->__anon1.op.exp2);
+kind1 = nbExp1->expType->promotedFrom ? nbExp1->expType->promotedFrom : nbExp1->expType->kind;
+kind2 = nbExp2->expType->promotedFrom ? nbExp2->expType->promotedFrom : nbExp2->expType->kind;
+if(((kind1 == 1 || (kind1 == 2 && kind == 2)) || MatchTypeExpression(nbExp1, exp->destType, (((void *)0)), 0, 0)) && ((kind2 == 1 || (kind2 == 2 && kind == 2)) || MatchTypeExpression(nbExp2, exp->destType, (((void *)0)), 0, 0)))
+skipWarning = 1;
+break;
+}
+case '&':
+{
+int kind1, kind2;
+
+nbExp1 = GetNonBracketsExp(nbExp->__anon1.op.exp1);
+nbExp2 = GetNonBracketsExp(nbExp->__anon1.op.exp2);
+kind1 = nbExp1->expType->promotedFrom ? nbExp1->expType->promotedFrom : nbExp1->expType->kind;
+kind2 = nbExp2->expType->promotedFrom ? nbExp2->expType->promotedFrom : nbExp2->expType->kind;
+if(((kind1 == 1 || (kind1 == 2 && kind == 2)) || MatchTypeExpression(nbExp1, exp->destType, (((void *)0)), 0, 0)) || ((kind2 == 1 || (kind2 == 2 && kind == 2)) || MatchTypeExpression(nbExp2, exp->destType, (((void *)0)), 0, 0)))
+skipWarning = 1;
+break;
+}
+}
+}
+if(!skipWarning)
+{
char expString[10240];
expString[0] = '\0';
else
Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString("ec", "incompatible expression %s (%s); expected %s\n", (((void *)0))), expString, type1, type2);
}
+}
if(!inCompiler)
{
FreeType(exp->expType);
}
strcpy(className, "__ecereClass_");
FullClassNameCat(className, _class->fullName, 1);
-structName[0] = (char)0;
+structName[0] = 0;
FullClassNameCat(structName, _class->fullName, 0);
funcDecl = GetFuncDecl(function->declarator);
if(funcDecl)