compiler/libec; bootstrap: Improved anonymous instantiations implementation
authorJerome St-Louis <jerome@ecere.com>
Sun, 31 Mar 2013 18:07:45 +0000 (14:07 -0400)
committerJerome St-Louis <jerome@ecere.com>
Sun, 31 Mar 2013 18:07:45 +0000 (14:07 -0400)
- Previously, a global '__ecereTemp%d' variable was used to temporarily hold the instance handle
  This caused problems at least with GCC 4.4.5/64 bit with -O2, where multiple initializers
  used the same variable, e.g. Array { [ Object { }, Object { } ]
- Now using GNU C compound statement expression with an internal declaration to solve this issue

20 files changed:
compiler/bootstrap/ecere/bootstrap/AVLTree.c
compiler/bootstrap/ecere/bootstrap/BufferedFile.c
compiler/bootstrap/ecere/bootstrap/DualPipe.c
compiler/bootstrap/ecere/bootstrap/List.c
compiler/bootstrap/ecere/bootstrap/Map.c
compiler/bootstrap/ecere/bootstrap/instance.c
compiler/bootstrap/libec/bootstrap/ast.c
compiler/bootstrap/libec/bootstrap/copy.c
compiler/bootstrap/libec/bootstrap/dbpass.c
compiler/bootstrap/libec/bootstrap/firstPass.c
compiler/bootstrap/libec/bootstrap/loadSymbols.c
compiler/bootstrap/libec/bootstrap/pass0.c
compiler/bootstrap/libec/bootstrap/pass1.c
compiler/bootstrap/libec/bootstrap/pass15.c
compiler/bootstrap/libec/bootstrap/pass16.c
compiler/bootstrap/libec/bootstrap/pass2.c
compiler/libec/locale/ec.pot
compiler/libec/src/pass15.ec
compiler/libec/src/pass16.ec
compiler/libec/src/pass2.ec

index 07943ed..9b5b824 100644 (file)
@@ -314,7 +314,6 @@ extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpac
 
 struct __ecereNameSpace__ecere__com__AVLNode * __ecereMethod___ecereNameSpace__ecere__com__AVLTree_Add(struct __ecereNameSpace__ecere__com__Instance * this, uint64 value)
 {
-void * __ecereTemp1;
 struct __ecereNameSpace__ecere__com__AVLNode * node;
 
 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].dataTypeClass->type == 1)
@@ -323,7 +322,11 @@ node = (struct __ecereNameSpace__ecere__com__AVLNode *)__ecereNameSpace__ecere__
 memcpy((void *)(((unsigned char *)&node->key) + __ENDIAN_PAD(sizeof(void *))), (void *)value, ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].dataTypeClass->structSize);
 }
 else
-node = (struct __ecereNameSpace__ecere__com__AVLNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_AVLNode), ((struct __ecereNameSpace__ecere__com__AVLNode *)__ecereTemp1)->key = value, ((struct __ecereNameSpace__ecere__com__AVLNode *)__ecereTemp1));
+node = (struct __ecereNameSpace__ecere__com__AVLNode *)__extension__ ({
+struct __ecereNameSpace__ecere__com__AVLNode * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_AVLNode);
+
+__ecereInstance1->key = value, __ecereInstance1;
+});
 if(!((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__ecereClass___ecereNameSpace__ecere__com__CustomAVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(this, (uint64)node))
 ((node ? (__ecereClass___ecereNameSpace__ecere__com__AVLNode->Destructor ? __ecereClass___ecereNameSpace__ecere__com__AVLNode->Destructor(node) : 0, __ecereClass___ecereNameSpace__ecere__com__IteratorPointer->Destructor ? __ecereClass___ecereNameSpace__ecere__com__IteratorPointer->Destructor(node) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(node)) : 0), node = 0);
 return node;
index 37d9e39..9b2755d 100644 (file)
@@ -701,7 +701,6 @@ int __ecereVMethodID___ecereNameSpace__ecere__sys__File_GetSize;
 
 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__sys__FileOpenBuffered(char * fileName, int mode)
 {
-void * __ecereTemp1;
 struct __ecereNameSpace__ecere__com__Instance * result = (((void *)0));
 
 {
index 15010a5..5572024 100644 (file)
@@ -488,12 +488,15 @@ extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpa
 
 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__sys__DualPipeOpen(unsigned int mode, char * commandLine)
 {
-void * __ecereTemp1;
 void * input, * output;
 void * f = _DualPipeOpen(mode, commandLine, (((void *)0)), &input, &output);
 
 if(f)
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__DualPipe), ((struct __ecereNameSpace__ecere__sys__DualPipe *)(((char *)((struct __ecereNameSpace__ecere__com__Instance *)__ecereTemp1) + __ecereClass___ecereNameSpace__ecere__sys__DualPipe->offset)))->dp = f, __ecereProp___ecereNameSpace__ecere__sys__File_Set_input(((struct __ecereNameSpace__ecere__com__Instance *)__ecereTemp1), input), __ecereProp___ecereNameSpace__ecere__sys__File_Set_output(((struct __ecereNameSpace__ecere__com__Instance *)__ecereTemp1), output), ((struct __ecereNameSpace__ecere__com__Instance *)__ecereTemp1));
+return __extension__ ({
+struct __ecereNameSpace__ecere__com__Instance * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__DualPipe);
+
+((struct __ecereNameSpace__ecere__sys__DualPipe *)(((char *)__ecereInstance1 + __ecereClass___ecereNameSpace__ecere__sys__DualPipe->offset)))->dp = f, __ecereProp___ecereNameSpace__ecere__sys__File_Set_input(__ecereInstance1, input), __ecereProp___ecereNameSpace__ecere__sys__File_Set_output(__ecereInstance1, output), __ecereInstance1;
+});
 return (((void *)0));
 }
 
@@ -513,12 +516,15 @@ return __ecereNameSpace__ecere__sys__DualPipeOpenEnv(mode, env, commandLine);
 
 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__sys__DualPipeOpenEnv(unsigned int mode, char * env, char * commandLine)
 {
-void * __ecereTemp1;
 void * input, * output;
 void * f = _DualPipeOpen(mode, commandLine, env, &input, &output);
 
 if(f)
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__DualPipe), ((struct __ecereNameSpace__ecere__sys__DualPipe *)(((char *)((struct __ecereNameSpace__ecere__com__Instance *)__ecereTemp1) + __ecereClass___ecereNameSpace__ecere__sys__DualPipe->offset)))->dp = f, __ecereProp___ecereNameSpace__ecere__sys__File_Set_input(((struct __ecereNameSpace__ecere__com__Instance *)__ecereTemp1), input), __ecereProp___ecereNameSpace__ecere__sys__File_Set_output(((struct __ecereNameSpace__ecere__com__Instance *)__ecereTemp1), output), ((struct __ecereNameSpace__ecere__com__Instance *)__ecereTemp1));
+return __extension__ ({
+struct __ecereNameSpace__ecere__com__Instance * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__DualPipe);
+
+((struct __ecereNameSpace__ecere__sys__DualPipe *)(((char *)__ecereInstance1 + __ecereClass___ecereNameSpace__ecere__sys__DualPipe->offset)))->dp = f, __ecereProp___ecereNameSpace__ecere__sys__File_Set_input(__ecereInstance1, input), __ecereProp___ecereNameSpace__ecere__sys__File_Set_output(__ecereInstance1, output), __ecereInstance1;
+});
 return (((void *)0));
 }
 
index da26835..75a4377 100644 (file)
@@ -330,7 +330,6 @@ extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpac
 
 struct __ecereNameSpace__ecere__com__Link * __ecereMethod___ecereNameSpace__ecere__com__List_Insert(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Link * after, uint64 value)
 {
-void * __ecereTemp1;
 struct __ecereNameSpace__ecere__com__Link * link;
 
 if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[6].dataTypeClass && ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[6].dataTypeClass->type == 1)
@@ -339,7 +338,11 @@ link = (struct __ecereNameSpace__ecere__com__Link *)__ecereNameSpace__ecere__com
 memcpy((void *)&link->data, (void *)value, ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[6].dataTypeClass->structSize);
 }
 else
-link = (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_Link), ((struct __ecereNameSpace__ecere__com__Link *)__ecereTemp1)->data = value, ((struct __ecereNameSpace__ecere__com__Link *)__ecereTemp1));
+link = __extension__ ({
+struct __ecereNameSpace__ecere__com__Link * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_Link);
+
+__ecereInstance1->data = value, __ecereInstance1;
+});
 ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * after, uint64 value))__ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Insert])(this, after, (void *)link);
 return link;
 }
index dde3c7b..c6b9db9 100644 (file)
@@ -554,7 +554,6 @@ return (struct __ecereNameSpace__ecere__com__MapNode *)((struct __ecereNameSpace
 
 struct __ecereNameSpace__ecere__com__MapNode * __ecereMethod___ecereNameSpace__ecere__com__Map_GetAtPosition(struct __ecereNameSpace__ecere__com__Instance * this, uint64 pos, unsigned int create)
 {
-void * __ecereTemp1;
 struct __ecereNameSpace__ecere__com__MapNode * node = ((struct __ecereNameSpace__ecere__com__MapNode *)((struct __ecereNameSpace__ecere__com__CustomAVLTree *)(((char *)this + structSize_Instance)))->root) ? __ecereMethod___ecereNameSpace__ecere__com__AVLNode_Find(((struct __ecereNameSpace__ecere__com__MapNode *)((struct __ecereNameSpace__ecere__com__CustomAVLTree *)(((char *)this + structSize_Instance)))->root), ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].dataTypeClass, pos) : (((void *)0));
 
 if(!node && create)
@@ -573,7 +572,11 @@ node = (struct __ecereNameSpace__ecere__com__MapNode *)__ecereNameSpace__ecere__
 }
 else
 {
-node = (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_MapNode), __ecereProp___ecereNameSpace__ecere__com__MapNode_Set_key(((struct __ecereNameSpace__ecere__com__MapNode *)__ecereTemp1), pos), ((struct __ecereNameSpace__ecere__com__MapNode *)__ecereTemp1));
+node = __extension__ ({
+struct __ecereNameSpace__ecere__com__MapNode * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_MapNode);
+
+__ecereProp___ecereNameSpace__ecere__com__MapNode_Set_key(__ecereInstance1, pos), __ecereInstance1;
+});
 }
 if(Tclass->type == 1000 || Tclass->type == 2 || Tclass->type == 4 || Tclass->type == 3)
 {
index 1379ce4..c09233f 100644 (file)
@@ -1410,10 +1410,10 @@ char *  parsedCommand;
 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
 } __attribute__ ((gcc_struct));
 
-extern char *  strncpy(char * , const char * , size_t n);
-
 extern int strcmp(const char * , const char * );
 
+extern char *  strncpy(char * , const char * , size_t n);
+
 static void __ecereNameSpace__ecere__com__FreeTemplatesDerivatives(struct __ecereNameSpace__ecere__com__Class * base);
 
 extern int printf(char * , ...);
@@ -1442,7 +1442,6 @@ void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameS
 
 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char * name, char * baseName, int size, int sizeClass, unsigned int (* Constructor)(void *), void (* Destructor)(void *), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess)
 {
-void * __ecereTemp1;
 int start = 0, c;
 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
 unsigned int force64Bits = ((unsigned int)((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->application + structSize_Module)))->isGUIApp & 2) ? 0x1 : 0x0;
@@ -1457,7 +1456,7 @@ struct __ecereNameSpace__ecere__com__Class * c = __ecereNameSpace__ecere__com__e
 
 if(c && c->fixed)
 fixed = 0x1;
-else if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + 24)))->name && !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->name, "ecereCOM"))
+else if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->name && !strcmp(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + structSize_Instance)))->name, "ecereCOM"))
 fixed = 0x1;
 }
 {
@@ -1665,7 +1664,11 @@ _class->fullName = __ecereNameSpace__ecere__sys__CopyString(name);
 }
 if(nameSpace)
 {
-__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = _class->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = _class, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
+struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink);
+
+__ecereInstance1->name = _class->name, __ecereInstance1->data = _class, __ecereInstance1;
+}));
 {
 struct __ecereNameSpace__ecere__sys__OldLink * t;
 
@@ -1673,7 +1676,11 @@ for(t = _class->templatized.first; t; t = t->next)
 {
 struct __ecereNameSpace__ecere__com__Class * template = t->data;
 
-__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = template->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = template, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
+struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink);
+
+__ecereInstance1->name = template->name, __ecereInstance1->data = template, __ecereInstance1;
+}));
 }
 }
 }
@@ -2353,8 +2360,6 @@ extern size_t strlen(const char * );
 
 struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, char * name)
 {
-void * __ecereTemp1;
-
 if(name && module)
 {
 struct __ecereNameSpace__ecere__com__BTNamedLink * link;
@@ -2410,13 +2415,21 @@ templatedClass->templateClass = _class;
 templatedClass->fullName = __ecereNameSpace__ecere__sys__CopyString(className);
 templatedClass->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(_class->dataTypeString);
 templatedClass->name = __ecereNameSpace__ecere__sys__CopyString(templatedClass->fullName + strlen(_class->fullName) - strlen(_class->name));
-__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*templatedClass->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = templatedClass->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = templatedClass, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*templatedClass->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
+struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink);
+
+__ecereInstance1->name = templatedClass->name, __ecereInstance1->data = templatedClass, __ecereInstance1;
+}));
 templatedClass->templateArgs = (((void *)0));
 templatedClass->numParams = 0;
 templatedClass->derivatives = __simpleStruct0;
 templatedClass->templatized = __simpleStruct1;
 __ecereNameSpace__ecere__com__ComputeClassParameters(templatedClass, templateParams, module);
-__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->templatized, (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_OldLink), ((struct __ecereNameSpace__ecere__sys__OldLink *)__ecereTemp1)->data = templatedClass, ((struct __ecereNameSpace__ecere__sys__OldLink *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->templatized, __extension__ ({
+struct __ecereNameSpace__ecere__sys__OldLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_OldLink);
+
+__ecereInstance1->data = templatedClass, __ecereInstance1;
+}));
 }
 return templatedClass;
 }
@@ -3322,19 +3335,26 @@ __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
 
 struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_AddProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * dataType, void * setStmt, void * getStmt, int declMode)
 {
-void * __ecereTemp1;
 struct __ecereNameSpace__ecere__com__Property * _property = (((void *)0));
 
 if(_class)
 {
 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->prop, (name ? name : dataType)))
 {
-_property = (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_Property), ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->isProperty = 0x1, ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(name ? name : dataType), ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->id = (name && (setStmt || getStmt || dataType)) ? _class->memberID++ : 0, ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->Set = setStmt, ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->Get = getStmt, ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataType), ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->_class = _class, ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->compiled = 0x1, ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->conversion = name ? 0x0 : 0x1, ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1)->memberAccess = declMode, ((struct __ecereNameSpace__ecere__com__Property *)__ecereTemp1));
+_property = __extension__ ({
+struct __ecereNameSpace__ecere__com__Property * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_Property);
+
+__ecereInstance1->isProperty = 0x1, __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(name ? name : dataType), __ecereInstance1->id = (name && (setStmt || getStmt || dataType)) ? _class->memberID++ : 0, __ecereInstance1->Set = setStmt, __ecereInstance1->Get = getStmt, __ecereInstance1->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(dataType), __ecereInstance1->_class = _class, __ecereInstance1->compiled = 0x1, __ecereInstance1->conversion = name ? 0x0 : 0x1, __ecereInstance1->memberAccess = declMode, __ecereInstance1;
+});
 if(name)
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, _property);
 else
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->conversions, _property);
-__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = _property->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = _property, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->prop, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
+struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink);
+
+__ecereInstance1->name = _property->name, __ecereInstance1->data = _property, __ecereInstance1;
+}));
 if(!_property->conversion)
 {
 __ecereNameSpace__ecere__com__FixDerivativeProperty(_class, _property);
@@ -3426,7 +3446,6 @@ return 0;
 
 void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char * name, long long value)
 {
-void * __ecereTemp1;
 struct __ecereNameSpace__ecere__com__ClassProperty * _property = __ecereNameSpace__ecere__com__eClass_FindClassProperty(_class, name);
 
 if(_property)
@@ -3436,7 +3455,11 @@ if(_property->Set)
 }
 else
 {
-__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->delayedCPValues, (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_NamedLink64), ((struct __ecereNameSpace__ecere__sys__NamedLink64 *)__ecereTemp1)->name = name, ((struct __ecereNameSpace__ecere__sys__NamedLink64 *)__ecereTemp1)->data = value, ((struct __ecereNameSpace__ecere__sys__NamedLink64 *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->delayedCPValues, __extension__ ({
+struct __ecereNameSpace__ecere__sys__NamedLink64 * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_NamedLink64);
+
+__ecereInstance1->name = name, __ecereInstance1->data = value, __ecereInstance1;
+}));
 }
 }
 
@@ -4100,8 +4123,6 @@ __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
 
 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, unsigned int size, unsigned int alignment, int declMode)
 {
-void * __ecereTemp1;
-
 if(_class && name)
 {
 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
@@ -4116,10 +4137,18 @@ _class->structAlignment = (__simpleStruct0 = _class->structAlignment, (__simpleS
 if(_class->memberOffset % alignment)
 _class->memberOffset += alignment - (_class->memberOffset % alignment);
 }
-dataMember = (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_DataMember), ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(name), ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->id = _class->memberID++, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->_class = _class, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->offset = _class->memberOffset, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->memberOffset = size, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->memberAccess = declMode, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->membersAlpha.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1));
+dataMember = __extension__ ({
+struct __ecereNameSpace__ecere__com__DataMember * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_DataMember);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(name), __ecereInstance1->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), __ecereInstance1->id = _class->memberID++, __ecereInstance1->_class = _class, __ecereInstance1->offset = _class->memberOffset, __ecereInstance1->memberOffset = size, __ecereInstance1->memberAccess = declMode, __ecereInstance1->membersAlpha.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
 _class->memberOffset += size;
-__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = dataMember->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = dataMember, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
+struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink);
+
+__ecereInstance1->name = dataMember->name, __ecereInstance1->data = dataMember, __ecereInstance1;
+}));
 return dataMember;
 }
 }
@@ -4128,8 +4157,6 @@ return (((void *)0));
 
 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_AddDataMember(struct __ecereNameSpace__ecere__com__DataMember * member, char * name, char * type, unsigned int size, unsigned int alignment, int declMode)
 {
-void * __ecereTemp1;
-
 if(name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&member->membersAlpha, name))
 {
 struct __ecereNameSpace__ecere__com__DataMember * dataMember;
@@ -4142,7 +4169,11 @@ member->structAlignment = (__simpleStruct0 = member->structAlignment, (__simpleS
 if(member->memberOffset % alignment)
 member->memberOffset += alignment - (member->memberOffset % alignment);
 }
-dataMember = (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_DataMember), ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(name), ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->_class = member->_class, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->id = member->memberID++, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->offset = (member->type == 1) ? 0 : member->memberOffset, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->memberAccess = declMode, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->membersAlpha.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1));
+dataMember = __extension__ ({
+struct __ecereNameSpace__ecere__com__DataMember * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_DataMember);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(name), __ecereInstance1->_class = member->_class, __ecereInstance1->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), __ecereInstance1->id = member->memberID++, __ecereInstance1->offset = (member->type == 1) ? 0 : member->memberOffset, __ecereInstance1->memberAccess = declMode, __ecereInstance1->membersAlpha.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&member->members, dataMember);
 if(member->type == 1)
 {
@@ -4151,7 +4182,11 @@ member->memberOffset = size;
 }
 else
 member->memberOffset += size;
-__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&member->membersAlpha, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = dataMember->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = dataMember, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&member->membersAlpha, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
+struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink);
+
+__ecereInstance1->name = dataMember->name, __ecereInstance1->data = dataMember, __ecereInstance1;
+}));
 return dataMember;
 }
 return (((void *)0));
@@ -4159,9 +4194,11 @@ return (((void *)0));
 
 struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct __ecereNameSpace__ecere__com__DataMember * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_DataMember);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_DataMember), ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->type = type, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->memberAccess = declMode, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1)->membersAlpha.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, ((struct __ecereNameSpace__ecere__com__DataMember *)__ecereTemp1));
+__ecereInstance1->type = type, __ecereInstance1->memberAccess = declMode, __ecereInstance1->membersAlpha.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, __ecereInstance1;
+});
 }
 
 static void __ecereNameSpace__ecere__com__SetMemberClass(struct __ecereNameSpace__ecere__com__DataMember * member, struct __ecereNameSpace__ecere__com__Class * _class)
@@ -4175,14 +4212,17 @@ __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
 
 unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
 {
-void * __ecereTemp1;
 int __simpleStruct0, __simpleStruct1;
 
 if(dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&addTo->membersAlpha, dataMember->name))
 return 0x0;
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&addTo->members, dataMember);
 if(dataMember->name)
-__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&addTo->membersAlpha, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = dataMember->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = dataMember, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&addTo->membersAlpha, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
+struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink);
+
+__ecereInstance1->name = dataMember->name, __ecereInstance1->data = dataMember, __ecereInstance1;
+}));
 dataMember->_class = addTo->_class;
 dataMember->id = addTo->memberID;
 if(dataMember->type == 1)
@@ -4203,14 +4243,17 @@ return 0x1;
 
 unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember)
 {
-void * __ecereTemp1;
 int __simpleStruct0, __simpleStruct1;
 
 if(!_class || _class->comRedefinition || (dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, dataMember->name)))
 return 0x0;
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
 if(dataMember->name)
-__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = dataMember->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = dataMember, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
+struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink);
+
+__ecereInstance1->name = dataMember->name, __ecereInstance1->data = dataMember, __ecereInstance1;
+}));
 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
 dataMember->id = _class->memberID;
 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
@@ -4225,8 +4268,6 @@ return 0x1;
 
 struct __ecereNameSpace__ecere__com__BitMember * __ecereNameSpace__ecere__com__eClass_AddBitMember(struct __ecereNameSpace__ecere__com__Class * _class, char * name, char * type, int bitSize, int bitPos, int declMode)
 {
-void * __ecereTemp1;
-
 if(_class && name && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
 {
 uint64 mask = 0;
@@ -4247,7 +4288,11 @@ mask |= 1;
 }
 bitMember->mask = mask << bitMember->pos;
 }
-__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = bitMember->name, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = bitMember, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
+struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink);
+
+__ecereInstance1->name = bitMember->name, __ecereInstance1->data = bitMember, __ecereInstance1;
+}));
 return bitMember;
 }
 return (((void *)0));
@@ -4255,7 +4300,6 @@ return (((void *)0));
 
 static struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__Module_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess, unsigned int ensureCOM)
 {
-void * __ecereTemp1;
 unsigned int (stdcall * Load)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
 unsigned int (stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
 struct __ecereNameSpace__ecere__com__Instance * module;
@@ -4336,7 +4380,11 @@ if(module)
 {
 if(fromModule)
 {
-__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + structSize_Instance)))->modules, (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__SubModule), ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->module = module, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->importMode = importAccess, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + structSize_Instance)))->modules, __extension__ ({
+struct __ecereNameSpace__ecere__com__SubModule * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__SubModule);
+
+__ecereInstance1->module = module, __ecereInstance1->importMode = importAccess, __ecereInstance1;
+}));
 }
 module->_refCount++;
 }
@@ -4346,7 +4394,11 @@ if(module)
 {
 if(fromModule)
 {
-__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + structSize_Instance)))->modules, (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__SubModule), ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->module = module, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->importMode = importAccess, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + structSize_Instance)))->modules, __extension__ ({
+struct __ecereNameSpace__ecere__com__SubModule * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__SubModule);
+
+__ecereInstance1->module = module, __ecereInstance1->importMode = importAccess, __ecereInstance1;
+}));
 }
 module->_refCount++;
 }
@@ -4365,7 +4417,6 @@ return __ecereNameSpace__ecere__com__Module_Load(fromModule, name, importAccess,
 
 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_LoadStatic(struct __ecereNameSpace__ecere__com__Instance * fromModule, char * name, int importAccess, unsigned int (* Load)(struct __ecereNameSpace__ecere__com__Instance * module), unsigned int (* Unload)(struct __ecereNameSpace__ecere__com__Instance * module))
 {
-void * __ecereTemp1;
 struct __ecereNameSpace__ecere__com__Instance * module;
 
 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + structSize_Instance)))->application + structSize_Module)))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->next)
@@ -4394,7 +4445,11 @@ if(module)
 {
 if(fromModule)
 {
-__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + structSize_Instance)))->modules, (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__SubModule), ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->module = module, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)->importMode = importAccess, ((struct __ecereNameSpace__ecere__com__SubModule *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + structSize_Instance)))->modules, __extension__ ({
+struct __ecereNameSpace__ecere__com__SubModule * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__SubModule);
+
+__ecereInstance1->module = module, __ecereInstance1->importMode = importAccess, __ecereInstance1;
+}));
 }
 module->_refCount++;
 }
@@ -4419,8 +4474,6 @@ __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(&((struct __ecereName
 
 void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string, int value)
 {
-void * __ecereTemp1;
-
 if(_class && _class->type == 4)
 {
 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
@@ -4431,7 +4484,11 @@ if(!strcmp(item->name, string))
 break;
 if(!item)
 {
-__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&data->values, (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_NamedLink), ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)->data = (void *)value, ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(string), ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&data->values, __extension__ ({
+struct __ecereNameSpace__ecere__sys__NamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_NamedLink);
+
+__ecereInstance1->data = (void *)value, __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(string), __ecereInstance1;
+}));
 if(value > data->largest)
 data->largest = value;
 }
@@ -4440,8 +4497,6 @@ data->largest = value;
 
 int __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string)
 {
-void * __ecereTemp1;
-
 if(_class && _class->type == 4)
 {
 struct __ecereNameSpace__ecere__com__EnumClassData * data = (struct __ecereNameSpace__ecere__com__EnumClassData *)_class->data;
@@ -4453,7 +4508,11 @@ if(!strcmp(item->name, string))
 break;
 if(!item)
 {
-__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&data->values, (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_NamedLink), ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)->data = (void *)value, ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(string), ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&data->values, __extension__ ({
+struct __ecereNameSpace__ecere__sys__NamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_NamedLink);
+
+__ecereInstance1->data = (void *)value, __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(string), __ecereInstance1;
+}));
 if(value > data->largest)
 data->largest = value;
 return value;
@@ -4655,7 +4714,6 @@ return string;
 
 struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_RegisterDefine(char * name, char * value, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
 {
-void * __ecereTemp1;
 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
 int start = 0, c;
 
@@ -4700,7 +4758,11 @@ if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindStri
 {
 struct __ecereNameSpace__ecere__com__DefinedExpression * def = (def = __ecereNameSpace__ecere__com__eSystem_New0(structSize_DefinedExpression), def->name = __ecereNameSpace__ecere__sys__CopyString(name), def->nameSpace = nameSpace, def->value = __ecereNameSpace__ecere__sys__CopyString(value), def);
 
-__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).defines, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = def->name + start, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = def, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).defines, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
+struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink);
+
+__ecereInstance1->name = def->name + start, __ecereInstance1->data = def, __ecereInstance1;
+}));
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->defines, def);
 return def;
 }
@@ -4709,7 +4771,6 @@ return (((void *)0));
 
 struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(char * name, char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode)
 {
-void * __ecereTemp1;
 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0));
 int start = 0, c;
 
@@ -4754,7 +4815,11 @@ if(c - start && !__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindStri
 {
 struct __ecereNameSpace__ecere__com__GlobalFunction * function = (function = __ecereNameSpace__ecere__com__eSystem_New0(structSize_GlobalFunction), function->name = __ecereNameSpace__ecere__sys__CopyString(name), function->nameSpace = nameSpace, function->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), function->function = func, function->module = module, function);
 
-__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).functions, (struct __ecereNameSpace__ecere__sys__BTNode *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink), ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->name = function->name + start, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)->data = function, ((struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).functions, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
+struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_BTNamedLink);
+
+__ecereInstance1->name = function->name + start, __ecereInstance1->data = function, __ecereInstance1;
+}));
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + structSize_Instance)))->functions, function);
 return function;
 }
@@ -4891,37 +4956,44 @@ __ecereNameSpace__ecere__com__FixDerivativesBase(_class, _class);
 
 void __ecereNameSpace__ecere__com__eProperty_SelfWatch(struct __ecereNameSpace__ecere__com__Class * _class, char * name, void (* callback)(void *))
 {
-void * __ecereTemp1;
-
 if(_class)
 {
 struct __ecereNameSpace__ecere__com__Property * _property = __ecereNameSpace__ecere__com__eClass_FindProperty(_class, name, _class->module);
 
 if(!_property)
 _property = __ecereNameSpace__ecere__com__eClass_AddProperty(_class, name, (((void *)0)), (((void *)0)), (((void *)0)), 4);
-__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->selfWatchers, (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_SelfWatcher), ((struct __ecereNameSpace__ecere__com__SelfWatcher *)__ecereTemp1)->_property = _property, ((struct __ecereNameSpace__ecere__com__SelfWatcher *)__ecereTemp1)->callback = callback, ((struct __ecereNameSpace__ecere__com__SelfWatcher *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->selfWatchers, __extension__ ({
+struct __ecereNameSpace__ecere__com__SelfWatcher * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_SelfWatcher);
+
+__ecereInstance1->_property = _property, __ecereInstance1->callback = callback, __ecereInstance1;
+}));
 _property->selfWatchable = 0x1;
 }
 }
 
 void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void *, void *))
 {
-void * __ecereTemp1;
-
 if(_property->isWatchable)
 {
 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + _property->watcherOffset);
 
-__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*watchers), (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_Watcher), ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)->callback = callback, ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)->object = object, ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*watchers), __extension__ ({
+struct __ecereNameSpace__ecere__com__Watcher * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_Watcher);
+
+__ecereInstance1->callback = callback, __ecereInstance1->object = object, __ecereInstance1;
+}));
 }
 }
 
 void __ecereNameSpace__ecere__com__eInstance_WatchDestruction(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Instance * object, void (* callback)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__Instance *))
 {
-void * __ecereTemp1;
 struct __ecereNameSpace__ecere__sys__OldList * watchers = (struct __ecereNameSpace__ecere__sys__OldList *)((unsigned char *)instance + ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->destructionWatchOffset);
 
-__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*watchers), (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_Watcher), ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)->callback = callback, ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)->object = object, ((struct __ecereNameSpace__ecere__com__Watcher *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*watchers), __extension__ ({
+struct __ecereNameSpace__ecere__com__Watcher * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_Watcher);
+
+__ecereInstance1->callback = callback, __ecereInstance1->object = object, __ecereInstance1;
+}));
 }
 
 void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object)
@@ -5256,8 +5328,6 @@ return app;
 
 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(struct __ecereNameSpace__ecere__com__Class * _class, char * name, int type, void * info, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * defaultArg)
 {
-void * __ecereTemp1;
-
 if(_class && name)
 {
 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
@@ -5267,7 +5337,11 @@ for(param = _class->templateParams.first; param; param = param->next)
 if(!strcmp(param->name, name))
 return param;
 }
-param = (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_ClassTemplateParameter), ((struct __ecereNameSpace__ecere__com__ClassTemplateParameter *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(name), ((struct __ecereNameSpace__ecere__com__ClassTemplateParameter *)__ecereTemp1)->type = type, ((struct __ecereNameSpace__ecere__com__ClassTemplateParameter *)__ecereTemp1)->dataTypeString = (type == 1) ? info : __ecereNameSpace__ecere__sys__CopyString(info), ((struct __ecereNameSpace__ecere__com__ClassTemplateParameter *)__ecereTemp1));
+param = __extension__ ({
+struct __ecereNameSpace__ecere__com__ClassTemplateParameter * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_ClassTemplateParameter);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(name), __ecereInstance1->type = type, __ecereInstance1->dataTypeString = (type == 1) ? info : __ecereNameSpace__ecere__sys__CopyString(info), __ecereInstance1;
+});
 if(defaultArg != (((void *)0)))
 {
 param->defaultArg = *defaultArg;
index 5e56b67..def2dfb 100644 (file)
@@ -1293,7 +1293,6 @@ extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpa
 
 struct Identifier * MkIdentifier(char * string)
 {
-void * __ecereTemp1;
 struct Identifier * id = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Identifier);
 int c;
 
@@ -1345,7 +1344,11 @@ struct TemplatedType * templatedType = FindTemplateTypeParameter(curContext, nam
 
 if(templatedType)
 {
-id->_class = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier), ((struct Specifier *)__ecereTemp1)->type = 8, ((struct Specifier *)__ecereTemp1)->templateParameter = templatedType->param, ((struct Specifier *)__ecereTemp1));
+id->_class = __extension__ ({
+struct Specifier * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier);
+
+__ecereInstance1->type = 8, __ecereInstance1->templateParameter = templatedType->param, __ecereInstance1;
+});
 id->string = __ecereNameSpace__ecere__sys__CopyString(namePart);
 }
 else
@@ -1442,30 +1445,38 @@ return argument;
 
 struct Expression * MkExpExtensionCompound(struct Statement * compound)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 25, ((struct Expression *)__ecereTemp1)->compound = compound, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 25, __ecereInstance1->compound = compound, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpExtensionExpression(struct __ecereNameSpace__ecere__sys__OldList * expressions)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 34, ((struct Expression *)__ecereTemp1)->list = expressions, ((struct Expression *)__ecereTemp1)->loc = yylloc, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 34, __ecereInstance1->list = expressions, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpExtensionInitializer(struct TypeName * typeName, struct Initializer * initializer)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 35, ((struct Expression *)__ecereTemp1)->initializer.typeName = typeName, ((struct Expression *)__ecereTemp1)->initializer.initializer = initializer, ((struct Expression *)__ecereTemp1)->loc = yylloc, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 35, __ecereInstance1->initializer.typeName = typeName, __ecereInstance1->initializer.initializer = initializer, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpIdentifier(struct Identifier * id)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 0, ((struct Expression *)__ecereTemp1)->identifier = id, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 0, __ecereInstance1->identifier = id, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpDummy()
@@ -1477,16 +1488,20 @@ return exp;
 
 struct Expression * MkExpConstant(char * string)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 2, ((struct Expression *)__ecereTemp1)->constant = __ecereNameSpace__ecere__sys__CopyString(string), ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 2, __ecereInstance1->constant = __ecereNameSpace__ecere__sys__CopyString(string), __ecereInstance1;
+});
 }
 
 struct Expression * MkExpString(char * string)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 3, ((struct Expression *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString(string), ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 3, __ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(string), __ecereInstance1;
+});
 }
 
 struct ContextStringPair
@@ -1641,128 +1656,164 @@ return exp;
 
 struct Expression * MkExpIndex(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * index)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 6, ((struct Expression *)__ecereTemp1)->index.exp = expression, ((struct Expression *)__ecereTemp1)->index.index = index, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 6, __ecereInstance1->index.exp = expression, __ecereInstance1->index.index = index, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 7, ((struct Expression *)__ecereTemp1)->call.exp = expression, ((struct Expression *)__ecereTemp1)->call.arguments = arguments, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 7, __ecereInstance1->call.exp = expression, __ecereInstance1->call.arguments = arguments, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 8, ((struct Expression *)__ecereTemp1)->member.exp = expression, ((struct Expression *)__ecereTemp1)->member.member = member, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 8, __ecereInstance1->member.exp = expression, __ecereInstance1->member.member = member, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpPointer(struct Expression * expression, struct Identifier * member)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 9, ((struct Expression *)__ecereTemp1)->member.exp = expression, ((struct Expression *)__ecereTemp1)->member.member = member, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 9, __ecereInstance1->member.exp = expression, __ecereInstance1->member.member = member, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpTypeSize(struct TypeName * typeName)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 10, ((struct Expression *)__ecereTemp1)->typeName = typeName, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 10, __ecereInstance1->typeName = typeName, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpTypeAlign(struct TypeName * typeName)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 38, ((struct Expression *)__ecereTemp1)->typeName = typeName, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 38, __ecereInstance1->typeName = typeName, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpClassSize(struct Specifier * _class)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 15, ((struct Expression *)__ecereTemp1)->_class = _class, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 15, __ecereInstance1->_class = _class, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 11, ((struct Expression *)__ecereTemp1)->cast.typeName = typeName, ((struct Expression *)__ecereTemp1)->cast.exp = expression, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 11, __ecereInstance1->cast.typeName = typeName, __ecereInstance1->cast.exp = expression, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 12, ((struct Expression *)__ecereTemp1)->cond.cond = cond, ((struct Expression *)__ecereTemp1)->cond.exp = expressions, ((struct Expression *)__ecereTemp1)->cond.elseExp = elseExp, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 12, __ecereInstance1->cond.cond = cond, __ecereInstance1->cond.exp = expressions, __ecereInstance1->cond.elseExp = elseExp, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpRenew(struct Expression * memExp, struct TypeName * type, struct Expression * size)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 14, ((struct Expression *)__ecereTemp1)->_renew.exp = memExp, ((struct Expression *)__ecereTemp1)->_renew.typeName = type, ((struct Expression *)__ecereTemp1)->_renew.size = size, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 14, __ecereInstance1->_renew.exp = memExp, __ecereInstance1->_renew.typeName = type, __ecereInstance1->_renew.size = size, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpRenew0(struct Expression * memExp, struct TypeName * type, struct Expression * size)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 29, ((struct Expression *)__ecereTemp1)->_renew.exp = memExp, ((struct Expression *)__ecereTemp1)->_renew.typeName = type, ((struct Expression *)__ecereTemp1)->_renew.size = size, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 29, __ecereInstance1->_renew.exp = memExp, __ecereInstance1->_renew.typeName = type, __ecereInstance1->_renew.size = size, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpNew(struct TypeName * type, struct Expression * size)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 13, ((struct Expression *)__ecereTemp1)->_new.typeName = type, ((struct Expression *)__ecereTemp1)->_new.size = size, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 13, __ecereInstance1->_new.typeName = type, __ecereInstance1->_new.size = size, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpNew0(struct TypeName * type, struct Expression * size)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 28, ((struct Expression *)__ecereTemp1)->_new.typeName = type, ((struct Expression *)__ecereTemp1)->_new.size = size, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 28, __ecereInstance1->_new.typeName = type, __ecereInstance1->_new.size = size, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpVaArg(struct Expression * exp, struct TypeName * type)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 36, ((struct Expression *)__ecereTemp1)->vaArg.exp = exp, ((struct Expression *)__ecereTemp1)->vaArg.typeName = type, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 36, __ecereInstance1->vaArg.exp = exp, __ecereInstance1->vaArg.typeName = type, __ecereInstance1;
+});
 }
 
 struct Specifier * MkSpecifier(int specifier)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Specifier * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier), ((struct Specifier *)__ecereTemp1)->type = 0, ((struct Specifier *)__ecereTemp1)->specifier = specifier, ((struct Specifier *)__ecereTemp1));
+__ecereInstance1->type = 0, __ecereInstance1->specifier = specifier, __ecereInstance1;
+});
 }
 
 struct Specifier * MkSpecifierTypeOf(struct Expression * expression)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Specifier * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier), ((struct Specifier *)__ecereTemp1)->type = 6, ((struct Specifier *)__ecereTemp1)->expression = expression, ((struct Specifier *)__ecereTemp1));
+__ecereInstance1->type = 6, __ecereInstance1->expression = expression, __ecereInstance1;
+});
 }
 
 struct Specifier * MkSpecifierSubClass(struct Specifier * _class)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Specifier * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier), ((struct Specifier *)__ecereTemp1)->type = 7, ((struct Specifier *)__ecereTemp1)->_class = _class, ((struct Specifier *)__ecereTemp1));
+__ecereInstance1->type = 7, __ecereInstance1->_class = _class, __ecereInstance1;
+});
 }
 
 struct Specifier * MkSpecifierExtended(struct ExtDecl * extDecl)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Specifier * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier), ((struct Specifier *)__ecereTemp1)->type = 5, ((struct Specifier *)__ecereTemp1)->extDecl = extDecl, ((struct Specifier *)__ecereTemp1));
+__ecereInstance1->type = 5, __ecereInstance1->extDecl = extDecl, __ecereInstance1;
+});
 }
 
 struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
@@ -1817,7 +1868,6 @@ struct Symbol * FindType(struct Context * ctx, char *  name);
 
 struct Specifier * MkStructOrUnion(int type, struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * definitions)
 {
-void * __ecereTemp1;
 struct Specifier * spec = (spec = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier), spec->type = type, spec->id = id, spec);
 
 if(id && FindType(curContext, id->string))
@@ -1832,7 +1882,11 @@ struct __ecereNameSpace__ecere__sys__OldList specs =
 struct Symbol * symbol;
 
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&specs, spec);
-symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString(id->string), ((struct Symbol *)__ecereTemp1)->type = ProcessType(&specs, (((void *)0))), ((struct Symbol *)__ecereTemp1)->isStruct = 0x1, ((struct Symbol *)__ecereTemp1));
+symbol = __extension__ ({
+struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
+
+__ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(id->string), __ecereInstance1->type = ProcessType(&specs, (((void *)0))), __ecereInstance1->isStruct = 0x1, __ecereInstance1;
+});
 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&curContext->structSymbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol))
 FreeSymbol(symbol);
 }
@@ -1841,8 +1895,6 @@ return spec;
 
 void AddStructDefinitions(struct Specifier * spec, struct __ecereNameSpace__ecere__sys__OldList * definitions)
 {
-void * __ecereTemp1;
-
 spec->definitions = definitions;
 if(definitions && spec->id && !declMode)
 {
@@ -1853,7 +1905,11 @@ struct __ecereNameSpace__ecere__sys__OldList specs =
 };
 
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&specs, spec);
-symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString(spec->id->string), ((struct Symbol *)__ecereTemp1)->type = ProcessType(&specs, (((void *)0))), ((struct Symbol *)__ecereTemp1)->isStruct = 0x1, ((struct Symbol *)__ecereTemp1));
+symbol = __extension__ ({
+struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
+
+__ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(spec->id->string), __ecereInstance1->type = ProcessType(&specs, (((void *)0))), __ecereInstance1->isStruct = 0x1, __ecereInstance1;
+});
 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&curContext->parent->structSymbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol))
 FreeSymbol(symbol);
 }
@@ -1861,135 +1917,173 @@ FreeSymbol(symbol);
 
 struct Attribute * MkAttribute(char * attr, struct Expression * exp)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Attribute * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Attribute);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Attribute), ((struct Attribute *)__ecereTemp1)->attr = attr, ((struct Attribute *)__ecereTemp1)->exp = exp, ((struct Attribute *)__ecereTemp1));
+__ecereInstance1->attr = attr, __ecereInstance1->exp = exp, __ecereInstance1;
+});
 }
 
 struct Attrib * MkAttrib(int type, struct __ecereNameSpace__ecere__sys__OldList * attribs)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Attrib * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Attrib);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Attrib), ((struct Attrib *)__ecereTemp1)->type = type, ((struct Attrib *)__ecereTemp1)->attribs = attribs, ((struct Attrib *)__ecereTemp1));
+__ecereInstance1->type = type, __ecereInstance1->attribs = attribs, __ecereInstance1;
+});
 }
 
 struct ExtDecl * MkExtDeclString(char * s)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct ExtDecl * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ExtDecl);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ExtDecl), ((struct ExtDecl *)__ecereTemp1)->type = 0, ((struct ExtDecl *)__ecereTemp1)->s = s, ((struct ExtDecl *)__ecereTemp1));
+__ecereInstance1->type = 0, __ecereInstance1->s = s, __ecereInstance1;
+});
 }
 
 struct ExtDecl * MkExtDeclAttrib(struct Attrib * attr)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct ExtDecl * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ExtDecl);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ExtDecl), ((struct ExtDecl *)__ecereTemp1)->type = 1, ((struct ExtDecl *)__ecereTemp1)->attr = attr, ((struct ExtDecl *)__ecereTemp1));
+__ecereInstance1->type = 1, __ecereInstance1->attr = attr, __ecereInstance1;
+});
 }
 
 struct Declarator * MkDeclaratorIdentifier(struct Identifier * id)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Declarator * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator), ((struct Declarator *)__ecereTemp1)->type = 1, ((struct Declarator *)__ecereTemp1)->identifier = id, ((struct Declarator *)__ecereTemp1));
+__ecereInstance1->type = 1, __ecereInstance1->identifier = id, __ecereInstance1;
+});
 }
 
 struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Declarator * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator), ((struct Declarator *)__ecereTemp1)->type = 4, ((struct Declarator *)__ecereTemp1)->declarator = declarator, ((struct Declarator *)__ecereTemp1)->function.parameters = parameters, ((struct Declarator *)__ecereTemp1));
+__ecereInstance1->type = 4, __ecereInstance1->declarator = declarator, __ecereInstance1->function.parameters = parameters, __ecereInstance1;
+});
 }
 
 struct Declarator * MkDeclaratorExtended(struct ExtDecl * extended, struct Declarator * declarator)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Declarator * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator), ((struct Declarator *)__ecereTemp1)->type = 6, ((struct Declarator *)__ecereTemp1)->declarator = declarator, ((struct Declarator *)__ecereTemp1)->extended.extended = extended, ((struct Declarator *)__ecereTemp1));
+__ecereInstance1->type = 6, __ecereInstance1->declarator = declarator, __ecereInstance1->extended.extended = extended, __ecereInstance1;
+});
 }
 
 struct Declarator * MkDeclaratorExtendedEnd(struct ExtDecl * extended, struct Declarator * declarator)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Declarator * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator), ((struct Declarator *)__ecereTemp1)->type = 7, ((struct Declarator *)__ecereTemp1)->declarator = declarator, ((struct Declarator *)__ecereTemp1)->extended.extended = extended, ((struct Declarator *)__ecereTemp1));
+__ecereInstance1->type = 7, __ecereInstance1->declarator = declarator, __ecereInstance1->extended.extended = extended, __ecereInstance1;
+});
 }
 
 struct Declarator * MkStructDeclarator(struct Declarator * declarator, struct Expression * exp)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Declarator * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator), ((struct Declarator *)__ecereTemp1)->type = 0, ((struct Declarator *)__ecereTemp1)->declarator = declarator, ((struct Declarator *)__ecereTemp1)->structDecl.exp = exp, ((struct Declarator *)__ecereTemp1));
+__ecereInstance1->type = 0, __ecereInstance1->declarator = declarator, __ecereInstance1->structDecl.exp = exp, __ecereInstance1;
+});
 }
 
 struct Declarator * MkDeclaratorBrackets(struct Declarator * declarator)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Declarator * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator), ((struct Declarator *)__ecereTemp1)->type = 2, ((struct Declarator *)__ecereTemp1)->declarator = declarator, ((struct Declarator *)__ecereTemp1));
+__ecereInstance1->type = 2, __ecereInstance1->declarator = declarator, __ecereInstance1;
+});
 }
 
 struct Declarator * MkDeclaratorArray(struct Declarator * declarator, struct Expression * exp)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Declarator * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator), ((struct Declarator *)__ecereTemp1)->type = 3, ((struct Declarator *)__ecereTemp1)->declarator = declarator, ((struct Declarator *)__ecereTemp1)->array.exp = exp, ((struct Declarator *)__ecereTemp1));
+__ecereInstance1->type = 3, __ecereInstance1->declarator = declarator, __ecereInstance1->array.exp = exp, __ecereInstance1;
+});
 }
 
 struct Declarator * MkDeclaratorEnumArray(struct Declarator * declarator, struct Specifier * _class)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Declarator * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator), ((struct Declarator *)__ecereTemp1)->type = 3, ((struct Declarator *)__ecereTemp1)->declarator = declarator, ((struct Declarator *)__ecereTemp1)->array.enumClass = _class, ((struct Declarator *)__ecereTemp1));
+__ecereInstance1->type = 3, __ecereInstance1->declarator = declarator, __ecereInstance1->array.enumClass = _class, __ecereInstance1;
+});
 }
 
 struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Declarator * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declarator), ((struct Declarator *)__ecereTemp1)->type = 5, ((struct Declarator *)__ecereTemp1)->declarator = declarator, ((struct Declarator *)__ecereTemp1)->pointer.pointer = pointer, ((struct Declarator *)__ecereTemp1));
+__ecereInstance1->type = 5, __ecereInstance1->declarator = declarator, __ecereInstance1->pointer.pointer = pointer, __ecereInstance1;
+});
 }
 
 struct Enumerator * MkEnumerator(struct Identifier * id, struct Expression * exp)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Enumerator * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Enumerator);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Enumerator), ((struct Enumerator *)__ecereTemp1)->id = id, ((struct Enumerator *)__ecereTemp1)->exp = exp, ((struct Enumerator *)__ecereTemp1));
+__ecereInstance1->id = id, __ecereInstance1->exp = exp, __ecereInstance1;
+});
 }
 
 struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Pointer * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Pointer);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Pointer), ((struct Pointer *)__ecereTemp1)->qualifiers = qualifiers, ((struct Pointer *)__ecereTemp1)->pointer = pointer, ((struct Pointer *)__ecereTemp1));
+__ecereInstance1->qualifiers = qualifiers, __ecereInstance1->pointer = pointer, __ecereInstance1;
+});
 }
 
 struct Initializer * MkInitializerAssignment(struct Expression * exp)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Initializer * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Initializer);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Initializer), ((struct Initializer *)__ecereTemp1)->type = 0, ((struct Initializer *)__ecereTemp1)->exp = exp, ((struct Initializer *)__ecereTemp1)->loc = yylloc, ((struct Initializer *)__ecereTemp1));
+__ecereInstance1->type = 0, __ecereInstance1->exp = exp, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Initializer * MkInitializerList(struct __ecereNameSpace__ecere__sys__OldList * list)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Initializer * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Initializer);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Initializer), ((struct Initializer *)__ecereTemp1)->type = 1, ((struct Initializer *)__ecereTemp1)->list = list, ((struct Initializer *)__ecereTemp1)->loc = yylloc, ((struct Initializer *)__ecereTemp1));
+__ecereInstance1->type = 1, __ecereInstance1->list = list, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct InitDeclarator * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_InitDeclarator);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_InitDeclarator), ((struct InitDeclarator *)__ecereTemp1)->declarator = declarator, ((struct InitDeclarator *)__ecereTemp1)->initializer = initializer, ((struct InitDeclarator *)__ecereTemp1));
+__ecereInstance1->declarator = declarator, __ecereInstance1->initializer = initializer, __ecereInstance1;
+});
 }
 
 struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct TypeName * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TypeName);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TypeName), ((struct TypeName *)__ecereTemp1)->qualifiers = qualifiers, ((struct TypeName *)__ecereTemp1)->declarator = declarator, ((struct TypeName *)__ecereTemp1));
+__ecereInstance1->qualifiers = qualifiers, __ecereInstance1->declarator = declarator, __ecereInstance1;
+});
 }
 
 struct Identifier * GetDeclId(struct Declarator * decl)
@@ -2001,9 +2095,11 @@ return decl ? decl->identifier : (((void *)0));
 
 struct Declaration * MkDeclarationClassInst(struct Instantiation * inst)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Declaration * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declaration);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declaration), ((struct Declaration *)__ecereTemp1)->type = 2, ((struct Declaration *)__ecereTemp1)->inst = inst, ((struct Declaration *)__ecereTemp1)->loc = yylloc, ((struct Declaration *)__ecereTemp1));
+__ecereInstance1->type = 2, __ecereInstance1->inst = inst, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 extern struct Context * globalContext;
@@ -2014,7 +2110,6 @@ extern struct __ecereNameSpace__ecere__sys__OldList *  excludedSymbols;
 
 struct Declaration * MkDeclarationInst(struct Instantiation * inst)
 {
-void * __ecereTemp1;
 struct Declaration * decl = (decl = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declaration), decl->type = 2, decl->inst = inst, decl->loc = yylloc, decl);
 struct Symbol * symbol;
 
@@ -2044,7 +2139,11 @@ name[len] = (char)0;
 (__ecereNameSpace__ecere__com__eSystem_Delete(inst->exp->identifier->string), inst->exp->identifier->string = 0);
 inst->exp->identifier->string = __ecereNameSpace__ecere__sys__CopyString(name);
 }
-symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = (inst->exp->type == 0) ? __ecereNameSpace__ecere__sys__CopyString(inst->exp->identifier->string) : (((void *)0)), ((struct Symbol *)__ecereTemp1)->type = MkClassTypeSymbol(inst->_class->symbol), ((struct Symbol *)__ecereTemp1));
+symbol = __extension__ ({
+struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
+
+__ecereInstance1->string = (inst->exp->type == 0) ? __ecereNameSpace__ecere__sys__CopyString(inst->exp->identifier->string) : (((void *)0)), __ecereInstance1->type = MkClassTypeSymbol(inst->_class->symbol), __ecereInstance1;
+});
 symbol->idCode = symbol->id = curContext->nextID++;
 if(strstr(symbol->string, "::"))
 curContext->hasNameSpace = 0x1;
@@ -2120,7 +2219,6 @@ struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ec
 
 struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators)
 {
-void * __ecereTemp1;
 struct Declaration * decl = (decl = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declaration), decl->type = 1, decl->declarators = initDeclarators, decl->specifiers = specifiers, decl->loc = yylloc, decl);
 unsigned int variable = 0x1;
 
@@ -2214,7 +2312,11 @@ id->string = __ecereNameSpace__ecere__sys__CopyString(name);
 symbol = (struct Symbol *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(curContext->templateTypesOnly ? curContext->parent : curContext)->symbols, id->string);
 if(!symbol)
 {
-symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString(id->string), ((struct Symbol *)__ecereTemp1)->type = ProcessType(specifiers, d->declarator), ((struct Symbol *)__ecereTemp1));
+symbol = __extension__ ({
+struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
+
+__ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(id->string), __ecereInstance1->type = ProcessType(specifiers, d->declarator), __ecereInstance1;
+});
 if(strstr(symbol->string, "::"))
 curContext->hasNameSpace = 0x1;
 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(curContext->templateTypesOnly ? curContext->parent : curContext)->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol))
@@ -2270,123 +2372,157 @@ return decl;
 
 struct Declaration * MkStructDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * declarators, struct Specifier * extStorage)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Declaration * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declaration);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Declaration), ((struct Declaration *)__ecereTemp1)->type = 0, ((struct Declaration *)__ecereTemp1)->declarators = declarators, ((struct Declaration *)__ecereTemp1)->specifiers = specifiers, ((struct Declaration *)__ecereTemp1)->extStorage = extStorage, ((struct Declaration *)__ecereTemp1)->loc = yylloc, ((struct Declaration *)__ecereTemp1));
+__ecereInstance1->type = 0, __ecereInstance1->declarators = declarators, __ecereInstance1->specifiers = specifiers, __ecereInstance1->extStorage = extStorage, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Statement * MkLabeledStmt(struct Identifier * id, struct Statement * statement)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 0, ((struct Statement *)__ecereTemp1)->labeled.id = id, ((struct Statement *)__ecereTemp1)->labeled.stmt = statement, ((struct Statement *)__ecereTemp1)->loc = yylloc, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 0, __ecereInstance1->labeled.id = id, __ecereInstance1->labeled.stmt = statement, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Statement * MkCaseStmt(struct Expression * exp, struct Statement * statement)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 1, ((struct Statement *)__ecereTemp1)->caseStmt.exp = exp, ((struct Statement *)__ecereTemp1)->caseStmt.stmt = statement, ((struct Statement *)__ecereTemp1)->loc = yylloc, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 1, __ecereInstance1->caseStmt.exp = exp, __ecereInstance1->caseStmt.stmt = statement, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 2, ((struct Statement *)__ecereTemp1)->compound.declarations = declarations, ((struct Statement *)__ecereTemp1)->compound.statements = statements, ((struct Statement *)__ecereTemp1)->loc = yylloc, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 2, __ecereInstance1->compound.declarations = declarations, __ecereInstance1->compound.statements = statements, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 3, ((struct Statement *)__ecereTemp1)->expressions = expressions, ((struct Statement *)__ecereTemp1)->loc = yylloc, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 3, __ecereInstance1->expressions = expressions, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Statement * MkBadDeclStmt(struct Declaration * decl)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 14, ((struct Statement *)__ecereTemp1)->decl = decl, ((struct Statement *)__ecereTemp1)->loc = yylloc, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 14, __ecereInstance1->decl = decl, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Statement * MkIfStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement, struct Statement * elseStmt)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 4, ((struct Statement *)__ecereTemp1)->ifStmt.exp = exp, ((struct Statement *)__ecereTemp1)->ifStmt.stmt = statement, ((struct Statement *)__ecereTemp1)->ifStmt.elseStmt = elseStmt, ((struct Statement *)__ecereTemp1)->loc = yylloc, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 4, __ecereInstance1->ifStmt.exp = exp, __ecereInstance1->ifStmt.stmt = statement, __ecereInstance1->ifStmt.elseStmt = elseStmt, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Statement * MkSwitchStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement)
 {
-void * __ecereTemp1;
-
 if(statement)
 statement->compound.isSwitch = 0x1;
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 5, ((struct Statement *)__ecereTemp1)->switchStmt.exp = exp, ((struct Statement *)__ecereTemp1)->switchStmt.stmt = statement, ((struct Statement *)__ecereTemp1)->loc = yylloc, ((struct Statement *)__ecereTemp1));
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
+
+__ecereInstance1->type = 5, __ecereInstance1->switchStmt.exp = exp, __ecereInstance1->switchStmt.stmt = statement, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Statement * MkWhileStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 6, ((struct Statement *)__ecereTemp1)->whileStmt.exp = exp, ((struct Statement *)__ecereTemp1)->whileStmt.stmt = statement, ((struct Statement *)__ecereTemp1)->loc = yylloc, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 6, __ecereInstance1->whileStmt.exp = exp, __ecereInstance1->whileStmt.stmt = statement, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Statement * MkDoWhileStmt(struct Statement * statement, struct __ecereNameSpace__ecere__sys__OldList * exp)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 7, ((struct Statement *)__ecereTemp1)->doWhile.exp = exp, ((struct Statement *)__ecereTemp1)->doWhile.stmt = statement, ((struct Statement *)__ecereTemp1)->loc = yylloc, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 7, __ecereInstance1->doWhile.exp = exp, __ecereInstance1->doWhile.stmt = statement, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Statement * MkForStmt(struct Statement * init, struct Statement * check, struct __ecereNameSpace__ecere__sys__OldList * inc, struct Statement * statement)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 8, ((struct Statement *)__ecereTemp1)->forStmt.init = init, ((struct Statement *)__ecereTemp1)->forStmt.check = check, ((struct Statement *)__ecereTemp1)->forStmt.increment = inc, ((struct Statement *)__ecereTemp1)->forStmt.stmt = statement, ((struct Statement *)__ecereTemp1)->loc = yylloc, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 8, __ecereInstance1->forStmt.init = init, __ecereInstance1->forStmt.check = check, __ecereInstance1->forStmt.increment = inc, __ecereInstance1->forStmt.stmt = statement, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Statement * MkForEachStmt(struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * exp, struct __ecereNameSpace__ecere__sys__OldList * filter, struct Statement * statement)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 18, ((struct Statement *)__ecereTemp1)->forEachStmt.id = id, ((struct Statement *)__ecereTemp1)->forEachStmt.exp = exp, ((struct Statement *)__ecereTemp1)->forEachStmt.filter = filter, ((struct Statement *)__ecereTemp1)->forEachStmt.stmt = statement, ((struct Statement *)__ecereTemp1)->loc = yylloc, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 18, __ecereInstance1->forEachStmt.id = id, __ecereInstance1->forEachStmt.exp = exp, __ecereInstance1->forEachStmt.filter = filter, __ecereInstance1->forEachStmt.stmt = statement, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Statement * MkGotoStmt(struct Identifier * id)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 9, ((struct Statement *)__ecereTemp1)->gotoStmt.id = id, ((struct Statement *)__ecereTemp1)->loc = yylloc, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 9, __ecereInstance1->gotoStmt.id = id, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Statement * MkContinueStmt()
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 10, ((struct Statement *)__ecereTemp1)->loc = yylloc, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 10, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Statement * MkBreakStmt()
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 11, ((struct Statement *)__ecereTemp1)->loc = yylloc, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 11, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct Statement * MkReturnStmt(struct __ecereNameSpace__ecere__sys__OldList * exp)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 12, ((struct Statement *)__ecereTemp1)->expressions = exp, ((struct Statement *)__ecereTemp1)->loc = yylloc, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 12, __ecereInstance1->expressions = exp, __ecereInstance1->loc = yylloc, __ecereInstance1;
+});
 }
 
 struct FunctionDefinition * MkFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * declarationList)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct FunctionDefinition * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_FunctionDefinition);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_FunctionDefinition), ((struct FunctionDefinition *)__ecereTemp1)->specifiers = specifiers, ((struct FunctionDefinition *)__ecereTemp1)->declarator = declarator, ((struct FunctionDefinition *)__ecereTemp1)->declarations = declarationList, ((struct FunctionDefinition *)__ecereTemp1));
+__ecereInstance1->specifiers = specifiers, __ecereInstance1->declarator = declarator, __ecereInstance1->declarations = declarationList, __ecereInstance1;
+});
 }
 
 extern struct Declarator * GetFuncDecl(struct Declarator * decl);
@@ -2403,7 +2539,6 @@ void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNa
 
 void ProcessFunctionBody(struct FunctionDefinition * func, struct Statement * body)
 {
-void * __ecereTemp1;
 struct Declarator * declarator = func->declarator;
 struct Declarator * funcDecl = GetFuncDecl(declarator);
 struct Symbol * symbol;
@@ -2429,7 +2564,11 @@ if(!strcmp(symbol->string, string))
 break;
 if(!symbol && id)
 {
-symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString(id->string), ((struct Symbol *)__ecereTemp1)->type = ProcessType(param->qualifiers, param->declarator), ((struct Symbol *)__ecereTemp1)->isParam = 0x1, ((struct Symbol *)__ecereTemp1));
+symbol = __extension__ ({
+struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
+
+__ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(id->string), __ecereInstance1->type = ProcessType(param->qualifiers, param->declarator), __ecereInstance1->isParam = 0x1, __ecereInstance1;
+});
 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&context->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol))
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
 symbol->id = context->nextID++;
@@ -2469,7 +2608,11 @@ name[len] = (char)0;
 (__ecereNameSpace__ecere__com__eSystem_Delete(id->string), id->string = 0);
 id->string = __ecereNameSpace__ecere__sys__CopyString(name);
 }
-symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString(id->string), ((struct Symbol *)__ecereTemp1)->type = ProcessType(func->specifiers, declarator), ((struct Symbol *)__ecereTemp1));
+symbol = __extension__ ({
+struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
+
+__ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(id->string), __ecereInstance1->type = ProcessType(func->specifiers, declarator), __ecereInstance1;
+});
 symbol->idCode = symbol->id = globalContext->nextID++;
 if(strstr(symbol->string, "::"))
 globalContext->hasNameSpace = 0x1;
@@ -2604,8 +2747,6 @@ void *  data;
 
 void SetClassTemplateArgs(struct Specifier * spec, struct __ecereNameSpace__ecere__sys__OldList * templateArgs)
 {
-void * __ecereTemp1;
-
 if(spec->type == 1)
 {
 struct Symbol * symbol = spec->symbol;
@@ -2677,7 +2818,11 @@ if(!symbol && spec->symbol)
 symbol = _DeclClass((((int)0x7fffffff)), templateString);
 }
 if(spec->symbol)
-__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&spec->symbol->templatedClasses, (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_OldLink), ((struct __ecereNameSpace__ecere__sys__OldLink *)__ecereTemp1)->data = symbol, ((struct __ecereNameSpace__ecere__sys__OldLink *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&spec->symbol->templatedClasses, __extension__ ({
+struct __ecereNameSpace__ecere__sys__OldLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_OldLink);
+
+__ecereInstance1->data = symbol, __ecereInstance1;
+}));
 (__ecereNameSpace__ecere__com__eSystem_Delete(spec->name), spec->name = 0);
 spec->symbol = symbol;
 spec->name = __ecereNameSpace__ecere__sys__CopyString(symbol ? symbol->string : templateString);
@@ -2744,9 +2889,11 @@ return _MkSpecifierName(name, (((void *)0)), templateArgs);
 
 struct ClassFunction * MkClassFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Specifier * _class, struct Declarator * decl, struct __ecereNameSpace__ecere__sys__OldList * declList)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct ClassFunction * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassFunction);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassFunction), ((struct ClassFunction *)__ecereTemp1)->specifiers = specifiers, ((struct ClassFunction *)__ecereTemp1)->declarator = decl, ((struct ClassFunction *)__ecereTemp1)->declarations = declList, ((struct ClassFunction *)__ecereTemp1));
+__ecereInstance1->specifiers = specifiers, __ecereInstance1->declarator = decl, __ecereInstance1->declarations = declList, __ecereInstance1;
+});
 }
 
 extern struct Specifier * CopySpecifier(struct Specifier * spec);
@@ -2755,7 +2902,6 @@ extern void FreeSpecifier(struct Specifier * spec);
 
 void ProcessClassFunctionBody(struct ClassFunction * func, struct Statement * body)
 {
-void * __ecereTemp1;
 struct Symbol * symbol;
 struct Declarator * decl = func->declarator;
 struct Declarator * funcDecl = GetFuncDecl(func->declarator);
@@ -2784,7 +2930,11 @@ symbol = (struct Symbol *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree
 }
 if(!symbol && id)
 {
-symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString(id->string), ((struct Symbol *)__ecereTemp1)->type = ProcessType(param->qualifiers, param->declarator), ((struct Symbol *)__ecereTemp1)->isParam = 0x1, ((struct Symbol *)__ecereTemp1));
+symbol = __extension__ ({
+struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
+
+__ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(id->string), __ecereInstance1->type = ProcessType(param->qualifiers, param->declarator), __ecereInstance1->isParam = 0x1, __ecereInstance1;
+});
 symbol->idCode = symbol->id = context->nextID++;
 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&context->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol))
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
@@ -2842,9 +2992,11 @@ return list;
 
 struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct MemberInit * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_MemberInit);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_MemberInit), ((struct MemberInit *)__ecereTemp1)->identifiers = ids, ((struct MemberInit *)__ecereTemp1)->initializer = initializer, ((struct MemberInit *)__ecereTemp1));
+__ecereInstance1->identifiers = ids, __ecereInstance1->initializer = initializer, __ecereInstance1;
+});
 }
 
 extern void FreeExpression(struct Expression * exp);
@@ -2870,23 +3022,29 @@ return init;
 
 struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct MembersInit * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_MembersInit);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_MembersInit), ((struct MembersInit *)__ecereTemp1)->type = 0, ((struct MembersInit *)__ecereTemp1)->dataMembers = dataMembers, ((struct MembersInit *)__ecereTemp1));
+__ecereInstance1->type = 0, __ecereInstance1->dataMembers = dataMembers, __ecereInstance1;
+});
 }
 
 struct MembersInit * MkMembersInitMethod(struct ClassFunction * function)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct MembersInit * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_MembersInit);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_MembersInit), ((struct MembersInit *)__ecereTemp1)->type = 1, ((struct MembersInit *)__ecereTemp1)->function = function, ((struct MembersInit *)__ecereTemp1));
+__ecereInstance1->type = 1, __ecereInstance1->function = function, __ecereInstance1;
+});
 }
 
 struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Instantiation * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Instantiation);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Instantiation), ((struct Instantiation *)__ecereTemp1)->_class = _class, ((struct Instantiation *)__ecereTemp1)->exp = exp, ((struct Instantiation *)__ecereTemp1)->members = members, ((struct Instantiation *)__ecereTemp1));
+__ecereInstance1->_class = _class, __ecereInstance1->exp = exp, __ecereInstance1->members = members, __ecereInstance1;
+});
 }
 
 extern void Compiler_Error(char *  format, ...);
@@ -2918,65 +3076,83 @@ return inst;
 
 struct ClassDef * MkClassDefAccessOverride(int access, struct Identifier * id)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct ClassDef * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef), ((struct ClassDef *)__ecereTemp1)->type = 13, ((struct ClassDef *)__ecereTemp1)->id = id, ((struct ClassDef *)__ecereTemp1)->memberAccess = access, ((struct ClassDef *)__ecereTemp1));
+__ecereInstance1->type = 13, __ecereInstance1->id = id, __ecereInstance1->memberAccess = access, __ecereInstance1;
+});
 }
 
 struct ClassDef * MkClassDefMemberAccess()
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct ClassDef * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef), ((struct ClassDef *)__ecereTemp1)->type = 12, ((struct ClassDef *)__ecereTemp1));
+__ecereInstance1->type = 12, __ecereInstance1;
+});
 }
 
 struct ClassDef * MkClassDefDeclaration(struct Declaration * decl)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct ClassDef * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef), ((struct ClassDef *)__ecereTemp1)->type = 2, ((struct ClassDef *)__ecereTemp1)->decl = decl, ((struct ClassDef *)__ecereTemp1));
+__ecereInstance1->type = 2, __ecereInstance1->decl = decl, __ecereInstance1;
+});
 }
 
 struct ClassDef * MkClassDefClassData(struct Declaration * decl)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct ClassDef * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef), ((struct ClassDef *)__ecereTemp1)->type = 9, ((struct ClassDef *)__ecereTemp1)->decl = decl, ((struct ClassDef *)__ecereTemp1));
+__ecereInstance1->type = 9, __ecereInstance1->decl = decl, __ecereInstance1;
+});
 }
 
 struct ClassDef * MkClassDefDesigner(char * designer)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct ClassDef * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef), ((struct ClassDef *)__ecereTemp1)->type = 5, ((struct ClassDef *)__ecereTemp1)->designer = __ecereNameSpace__ecere__sys__CopyString(designer), ((struct ClassDef *)__ecereTemp1));
+__ecereInstance1->type = 5, __ecereInstance1->designer = __ecereNameSpace__ecere__sys__CopyString(designer), __ecereInstance1;
+});
 }
 
 struct ClassDef * MkClassDefNoExpansion()
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct ClassDef * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef), ((struct ClassDef *)__ecereTemp1)->type = 6, ((struct ClassDef *)__ecereTemp1));
+__ecereInstance1->type = 6, __ecereInstance1;
+});
 }
 
 struct ClassDef * MkClassDefFixed()
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct ClassDef * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef), ((struct ClassDef *)__ecereTemp1)->type = 7, ((struct ClassDef *)__ecereTemp1));
+__ecereInstance1->type = 7, __ecereInstance1;
+});
 }
 
 struct ClassDef * MkClassDefDesignerDefaultProperty(struct Identifier * id)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct ClassDef * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef), ((struct ClassDef *)__ecereTemp1)->type = 8, ((struct ClassDef *)__ecereTemp1)->defaultProperty = id, ((struct ClassDef *)__ecereTemp1));
+__ecereInstance1->type = 8, __ecereInstance1->defaultProperty = id, __ecereInstance1;
+});
 }
 
 struct ClassDef * MkClassDefDefaultProperty(struct __ecereNameSpace__ecere__sys__OldList * defProperties)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct ClassDef * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef), ((struct ClassDef *)__ecereTemp1)->type = 1, ((struct ClassDef *)__ecereTemp1)->defProperties = defProperties, ((struct ClassDef *)__ecereTemp1));
+__ecereInstance1->type = 1, __ecereInstance1->defProperties = defProperties, __ecereInstance1;
+});
 }
 
 extern void FreeClassFunction(struct ClassFunction * func);
@@ -3046,14 +3222,17 @@ return DeclClassAddNameSpace(symbolID, name);
 
 struct Symbol * _DeclClass(int symbolID, char * name)
 {
-void * __ecereTemp1;
 struct Symbol * symbol = FindClass(name);
 
 if(!symbol)
 {
 if(name[0] == ':' && name[1] == ':')
 name += 2;
-symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString(name), ((struct Symbol *)__ecereTemp1)->idCode = symbolID, ((struct Symbol *)__ecereTemp1)->id = symbolID, ((struct Symbol *)__ecereTemp1));
+symbol = __extension__ ({
+struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
+
+__ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(name), __ecereInstance1->idCode = symbolID, __ecereInstance1->id = symbolID, __ecereInstance1;
+});
 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->classes, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol))
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
 {
@@ -3097,8 +3276,6 @@ void *  param;
 
 void SetupBaseSpecs(struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs)
 {
-void * __ecereTemp1;
-
 if(baseSpecs && baseSpecs->first && ((struct Specifier *)baseSpecs->first)->type == 1)
 {
 char name[1024];
@@ -3139,9 +3316,17 @@ struct TemplatedType * type;
 
 if(!param)
 {
-p->param = param = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TemplateParameter), ((struct TemplateParameter *)__ecereTemp1)->identifier = MkIdentifier(p->name), ((struct TemplateParameter *)__ecereTemp1)->type = p->type, ((struct TemplateParameter *)__ecereTemp1)->dataTypeString = p->dataTypeString, ((struct TemplateParameter *)__ecereTemp1));
+p->param = param = __extension__ ({
+struct TemplateParameter * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TemplateParameter);
+
+__ecereInstance1->identifier = MkIdentifier(p->name), __ecereInstance1->type = p->type, __ecereInstance1->dataTypeString = p->dataTypeString, __ecereInstance1;
+});
 }
-type = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TemplatedType), ((struct TemplatedType *)__ecereTemp1)->key = (uintptr_t)p->name, ((struct TemplatedType *)__ecereTemp1)->param = param, ((struct TemplatedType *)__ecereTemp1));
+type = __extension__ ({
+struct TemplatedType * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TemplatedType);
+
+__ecereInstance1->key = (uintptr_t)p->name, __ecereInstance1->param = param, __ecereInstance1;
+});
 if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&curContext->templateTypes, (struct __ecereNameSpace__ecere__sys__BTNode *)type))
 ((type ? (__ecereClass_TemplatedType->Destructor ? __ecereClass_TemplatedType->Destructor(type) : 0, __ecereClass___ecereNameSpace__ecere__sys__BTNode->Destructor ? __ecereClass___ecereNameSpace__ecere__sys__BTNode->Destructor(type) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(type)) : 0), type = 0);
 }
@@ -3159,7 +3344,6 @@ extern void FreeContext(struct Context * context);
 
 struct ClassDefinition * MkClass(struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs, struct __ecereNameSpace__ecere__sys__OldList * definitions)
 {
-void * __ecereTemp1;
 struct ClassDefinition * classDef;
 
 SetupBaseSpecs(symbol, baseSpecs);
@@ -3185,30 +3369,37 @@ FreeContext(symbol->ctx);
 ((symbol->ctx ? (__ecereClass_Context->Destructor ? __ecereClass_Context->Destructor(symbol->ctx) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(symbol->ctx)) : 0), symbol->ctx = 0);
 }
 symbol->ctx = curContext;
-classDef = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDefinition), ((struct ClassDefinition *)__ecereTemp1)->symbol = symbol, ((struct ClassDefinition *)__ecereTemp1)->_class = MkSpecifierName(symbol->string), ((struct ClassDefinition *)__ecereTemp1)->baseSpecs = baseSpecs, ((struct ClassDefinition *)__ecereTemp1)->definitions = definitions, ((struct ClassDefinition *)__ecereTemp1)->nameLoc = symbol->nameLoc, ((struct ClassDefinition *)__ecereTemp1));
+classDef = __extension__ ({
+struct ClassDefinition * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDefinition);
+
+__ecereInstance1->symbol = symbol, __ecereInstance1->_class = MkSpecifierName(symbol->string), __ecereInstance1->baseSpecs = baseSpecs, __ecereInstance1->definitions = definitions, __ecereInstance1->nameLoc = symbol->nameLoc, __ecereInstance1;
+});
 curContext->classDef = classDef;
 return classDef;
 }
 
 struct Expression * MkExpInstance(struct Instantiation * inst)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 1, ((struct Expression *)__ecereTemp1)->instance = inst, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 1, __ecereInstance1->instance = inst, __ecereInstance1;
+});
 }
 
 struct External * MkExternalClass(struct ClassDefinition * _class)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct External * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_External);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_External), ((struct External *)__ecereTemp1)->type = 2, ((struct External *)__ecereTemp1)->_class = _class, ((struct External *)__ecereTemp1)->symbol = _class->symbol, ((struct External *)__ecereTemp1));
+__ecereInstance1->type = 2, __ecereInstance1->_class = _class, __ecereInstance1->symbol = _class->symbol, __ecereInstance1;
+});
 }
 
 extern void PrintType(struct Type * type, char *  string, unsigned int printName, unsigned int fullName);
 
 struct PropertyDef * MkProperty(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl, struct Identifier * id, struct Statement * setStmt, struct Statement * getStmt)
 {
-void * __ecereTemp1;
 struct PropertyDef * prop = (prop = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_PropertyDef), prop->specifiers = specs, prop->declarator = decl, prop->setStmt = setStmt, prop->getStmt = getStmt, prop);
 struct Symbol * symbol;
 struct Type * type = ProcessType(specs, decl);
@@ -3223,7 +3414,11 @@ id = MkIdentifier(typeString);
 prop->conversion = 0x1;
 }
 prop->id = id;
-symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString(id->string), ((struct Symbol *)__ecereTemp1)->type = type, ((struct Symbol *)__ecereTemp1));
+symbol = __extension__ ({
+struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
+
+__ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(id->string), __ecereInstance1->type = type, __ecereInstance1;
+});
 symbol->idCode = symbol->id = globalContext->nextID++;
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
 globalContext->nextID++;
@@ -3234,23 +3429,29 @@ return prop;
 
 struct ClassDef * MkClassDefProperty(struct PropertyDef * propertyDef)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct ClassDef * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef), ((struct ClassDef *)__ecereTemp1)->type = 3, ((struct ClassDef *)__ecereTemp1)->propertyDef = propertyDef, ((struct ClassDef *)__ecereTemp1));
+__ecereInstance1->type = 3, __ecereInstance1->propertyDef = propertyDef, __ecereInstance1;
+});
 }
 
 struct ClassDef * MkClassDefClassProperty(struct PropertyDef * propertyDef)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct ClassDef * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef), ((struct ClassDef *)__ecereTemp1)->type = 10, ((struct ClassDef *)__ecereTemp1)->propertyDef = propertyDef, ((struct ClassDef *)__ecereTemp1));
+__ecereInstance1->type = 10, __ecereInstance1->propertyDef = propertyDef, __ecereInstance1;
+});
 }
 
 struct ClassDef * MkClassDefClassPropertyValue(struct Identifier * id, struct Initializer * initializer)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct ClassDef * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef), ((struct ClassDef *)__ecereTemp1)->type = 11, ((struct ClassDef *)__ecereTemp1)->id = id, ((struct ClassDef *)__ecereTemp1)->initializer = initializer, ((struct ClassDef *)__ecereTemp1));
+__ecereInstance1->type = 11, __ecereInstance1->id = id, __ecereInstance1->initializer = initializer, __ecereInstance1;
+});
 }
 
 int CheckType(char * text)
@@ -3383,7 +3584,6 @@ extern struct __ecereNameSpace__ecere__sys__OldList *  imports;
 
 struct ModuleImport * FindModule(struct __ecereNameSpace__ecere__com__Instance * moduleToFind)
 {
-void * __ecereTemp1;
 struct ModuleImport * module;
 
 if(!((struct __ecereNameSpace__ecere__com__Module *)(((char *)moduleToFind + structSize_Instance)))->name)
@@ -3393,7 +3593,11 @@ if(module->name && !strcmp(module->name, ((struct __ecereNameSpace__ecere__com__
 break;
 if(!module)
 {
-module = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ModuleImport), ((struct ModuleImport *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(((struct __ecereNameSpace__ecere__com__Module *)(((char *)moduleToFind + structSize_Instance)))->name), ((struct ModuleImport *)__ecereTemp1)->importType = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)moduleToFind + structSize_Instance)))->importType, ((struct ModuleImport *)__ecereTemp1)->importAccess = ModuleAccess(privateModule, moduleToFind) ? 1 : 2, ((struct ModuleImport *)__ecereTemp1));
+module = __extension__ ({
+struct ModuleImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ModuleImport);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(((struct __ecereNameSpace__ecere__com__Module *)(((char *)moduleToFind + structSize_Instance)))->name), __ecereInstance1->importType = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)moduleToFind + structSize_Instance)))->importType, __ecereInstance1->importAccess = ModuleAccess(privateModule, moduleToFind) ? 1 : 2, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*imports), module);
 }
 return module;
@@ -3403,7 +3607,6 @@ extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com
 
 struct Symbol * FindClass(char * name)
 {
-void * __ecereTemp1;
 struct Symbol * cl = (((void *)0));
 struct __ecereNameSpace__ecere__com__Class * _class;
 unsigned int global = 0x0;
@@ -3461,7 +3664,11 @@ name = _class->fullName;
 cl = (struct Symbol *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&globalContext->classes, name);
 if(!cl)
 {
-cl = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString(name), ((struct Symbol *)__ecereTemp1)->registered = _class, ((struct Symbol *)__ecereTemp1)->id = (((int)0x7fffffff)), ((struct Symbol *)__ecereTemp1)->idCode = (((int)0x7fffffff)), ((struct Symbol *)__ecereTemp1)->imported = 0x1, ((struct Symbol *)__ecereTemp1));
+cl = __extension__ ({
+struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
+
+__ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(name), __ecereInstance1->registered = _class, __ecereInstance1->id = (((int)0x7fffffff)), __ecereInstance1->idCode = (((int)0x7fffffff)), __ecereInstance1->imported = 0x1, __ecereInstance1;
+});
 _class->symbol = cl;
 if(_class->module)
 cl->module = FindModule(_class->module);
@@ -3493,8 +3700,6 @@ void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Clear(struct __ecereNam
 
 void CopyTypeInto(struct Type * type, struct Type * src)
 {
-void * __ecereTemp1;
-
 *type = *src;
 type->name = __ecereNameSpace__ecere__sys__CopyString(src->name);
 type->enumName = __ecereNameSpace__ecere__sys__CopyString(src->enumName);
@@ -3506,7 +3711,11 @@ struct __ecereNameSpace__ecere__sys__NamedLink * member;
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Clear(&type->members);
 for(member = src->members.first; member; member = member->next)
 {
-__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&type->members, (__ecereTemp1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_NamedLink), ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(member->name), ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)->data = member->data, ((struct __ecereNameSpace__ecere__sys__NamedLink *)__ecereTemp1)));
+__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&type->members, __extension__ ({
+struct __ecereNameSpace__ecere__sys__NamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(structSize_NamedLink);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(member->name), __ecereInstance1->data = member->data, __ecereInstance1;
+}));
 }
 }
 else if(src->kind == 9 || src->kind == 10)
@@ -3545,7 +3754,6 @@ extern struct Symbol * FindSymbol(char *  name, struct Context * startContext, s
 
 struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl)
 {
-void * __ecereTemp1;
 struct Type * type = (((void *)0));
 unsigned int isTypedef = 0x0;
 
@@ -3558,7 +3766,11 @@ unsigned int dllExport = 0x0;
 specType->kind = 3;
 specType->isSigned = 0x1;
 specType->refCount = 1;
-type = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+type = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1;
+});
 while(decl && (decl->type == 0 || decl->type == 6 || decl->type == 7))
 {
 if(decl->type == 0 && decl->structDecl.exp)
@@ -3599,7 +3811,11 @@ specType->keepCast = 0x1;
 if(spec->specifier != CONST && (specType->kind == 9 || specType->kind == 10))
 {
 FreeType(specType);
-specType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->kind = 3, ((struct Type *)__ecereTemp1)->isSigned = 0x1, ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+specType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->kind = 3, __ecereInstance1->isSigned = 0x1, __ecereInstance1->refCount = 1, __ecereInstance1;
+});
 }
 if(spec->type == 0)
 {
@@ -3865,16 +4081,28 @@ ptrType->kind = 13;
 pointer = pointer->pointer;
 if(pointer)
 {
-ptrType->type = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+ptrType->type = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1;
+});
 ptrType = ptrType->type;
 }
 }
-ptrType->type = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+ptrType->type = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1;
+});
 *ptrType->type = *specType;
 }
 else
 {
-funcType->returnType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+funcType->returnType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1;
+});
 *funcType->returnType = *specType;
 }
 while(d && (d->type == 2 || d->type == 6 || d->type == 7))
@@ -3920,7 +4148,11 @@ ptrType->kind = 13;
 pointer = pointer->pointer;
 if(pointer)
 {
-ptrType->type = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+ptrType->type = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1;
+});
 ptrType = ptrType->type;
 }
 }
@@ -3934,7 +4166,11 @@ ptrType = type;
 while(pointer)
 {
 ptrType->kind = 13;
-ptrType->type = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+ptrType->type = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1;
+});
 pointer = pointer->pointer;
 if(pointer)
 ptrType = ptrType->type;
@@ -4044,7 +4280,11 @@ ptrType->kind = 13;
 pointer = pointer->pointer;
 if(pointer)
 {
-ptrType->type = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+ptrType->type = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1;
+});
 ptrType = ptrType->type;
 }
 }
@@ -4071,7 +4311,11 @@ ptrType->kind = 13;
 pointer = pointer->pointer;
 if(pointer)
 {
-ptrType->type = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+ptrType->type = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1;
+});
 ptrType = ptrType->type;
 }
 }
@@ -4186,142 +4430,182 @@ return (((void *)0));
 
 struct AsmField * MkAsmField(char * command, struct Expression * expression)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct AsmField * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_AsmField);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_AsmField), ((struct AsmField *)__ecereTemp1)->command = command, ((struct AsmField *)__ecereTemp1)->expression = expression, ((struct AsmField *)__ecereTemp1));
+__ecereInstance1->command = command, __ecereInstance1->expression = expression, __ecereInstance1;
+});
 }
 
 struct Statement * MkAsmStmt(struct Specifier * spec, char * statements, struct __ecereNameSpace__ecere__sys__OldList * inputFields, struct __ecereNameSpace__ecere__sys__OldList * outputFields, struct __ecereNameSpace__ecere__sys__OldList * clobberedFields)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 13, ((struct Statement *)__ecereTemp1)->asmStmt.spec = spec, ((struct Statement *)__ecereTemp1)->asmStmt.statements = statements, ((struct Statement *)__ecereTemp1)->asmStmt.inputFields = inputFields, ((struct Statement *)__ecereTemp1)->asmStmt.outputFields = outputFields, ((struct Statement *)__ecereTemp1)->asmStmt.clobberedFields = clobberedFields, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 13, __ecereInstance1->asmStmt.spec = spec, __ecereInstance1->asmStmt.statements = statements, __ecereInstance1->asmStmt.inputFields = inputFields, __ecereInstance1->asmStmt.outputFields = outputFields, __ecereInstance1->asmStmt.clobberedFields = clobberedFields, __ecereInstance1;
+});
 }
 
 struct ClassDef * MkClassDefPropertyWatch(struct PropertyWatch * watcher)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct ClassDef * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassDef), ((struct ClassDef *)__ecereTemp1)->type = 4, ((struct ClassDef *)__ecereTemp1)->propertyWatch = watcher, ((struct ClassDef *)__ecereTemp1));
+__ecereInstance1->type = 4, __ecereInstance1->propertyWatch = watcher, __ecereInstance1;
+});
 }
 
 struct Statement * MkFireWatchersStmt(struct Expression * object, struct __ecereNameSpace__ecere__sys__OldList * watches)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 15, ((struct Statement *)__ecereTemp1)->_watch.object = object, ((struct Statement *)__ecereTemp1)->_watch.watches = watches, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 15, __ecereInstance1->_watch.object = object, __ecereInstance1->_watch.watches = watches, __ecereInstance1;
+});
 }
 
 struct Statement * MkStopWatchingStmt(struct Expression * watcher, struct Expression * object, struct __ecereNameSpace__ecere__sys__OldList * watches)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 16, ((struct Statement *)__ecereTemp1)->_watch.watcher = watcher, ((struct Statement *)__ecereTemp1)->_watch.object = object, ((struct Statement *)__ecereTemp1)->_watch.watches = watches, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 16, __ecereInstance1->_watch.watcher = watcher, __ecereInstance1->_watch.object = object, __ecereInstance1->_watch.watches = watches, __ecereInstance1;
+});
 }
 
 struct Statement * MkWatchStmt(struct Expression * watcher, struct Expression * object, struct __ecereNameSpace__ecere__sys__OldList * watches)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Statement * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Statement), ((struct Statement *)__ecereTemp1)->type = 17, ((struct Statement *)__ecereTemp1)->_watch.watcher = watcher, ((struct Statement *)__ecereTemp1)->_watch.object = object, ((struct Statement *)__ecereTemp1)->_watch.watches = watches, ((struct Statement *)__ecereTemp1));
+__ecereInstance1->type = 17, __ecereInstance1->_watch.watcher = watcher, __ecereInstance1->_watch.object = object, __ecereInstance1->_watch.watches = watches, __ecereInstance1;
+});
 }
 
 struct PropertyWatch * MkDeleteWatch(struct Statement * compound)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct PropertyWatch * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_PropertyWatch);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_PropertyWatch), ((struct PropertyWatch *)__ecereTemp1)->compound = compound, ((struct PropertyWatch *)__ecereTemp1)->deleteWatch = 0x1, ((struct PropertyWatch *)__ecereTemp1));
+__ecereInstance1->compound = compound, __ecereInstance1->deleteWatch = 0x1, __ecereInstance1;
+});
 }
 
 struct PropertyWatch * MkPropertyWatch(struct __ecereNameSpace__ecere__sys__OldList * properties, struct Statement * compound)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct PropertyWatch * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_PropertyWatch);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_PropertyWatch), ((struct PropertyWatch *)__ecereTemp1)->compound = compound, ((struct PropertyWatch *)__ecereTemp1)->properties = properties, ((struct PropertyWatch *)__ecereTemp1));
+__ecereInstance1->compound = compound, __ecereInstance1->properties = properties, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpClass(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * decl)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 26, ((struct Expression *)__ecereTemp1)->_classExp.specifiers = specifiers, ((struct Expression *)__ecereTemp1)->_classExp.decl = decl, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 26, __ecereInstance1->_classExp.specifiers = specifiers, __ecereInstance1->_classExp.decl = decl, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpClassData(struct Identifier * id)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 27, ((struct Expression *)__ecereTemp1)->classData.id = id, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 27, __ecereInstance1->classData.id = id, __ecereInstance1;
+});
 }
 
 struct External * MkExternalDBTable(struct DBTableDef * table)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct External * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_External);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_External), ((struct External *)__ecereTemp1)->type = 5, ((struct External *)__ecereTemp1)->table = table, ((struct External *)__ecereTemp1));
+__ecereInstance1->type = 5, __ecereInstance1->table = table, __ecereInstance1;
+});
 }
 
 struct DBTableDef * MkDBTableDef(char * name, struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * definitions)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct DBTableDef * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DBTableDef);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DBTableDef), ((struct DBTableDef *)__ecereTemp1)->name = name, ((struct DBTableDef *)__ecereTemp1)->symbol = symbol, ((struct DBTableDef *)__ecereTemp1)->definitions = definitions, ((struct DBTableDef *)__ecereTemp1));
+__ecereInstance1->name = name, __ecereInstance1->symbol = symbol, __ecereInstance1->definitions = definitions, __ecereInstance1;
+});
 }
 
 struct DBTableEntry * MkDBFieldEntry(struct TypeName * type, struct Identifier * id, char * name)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct DBTableEntry * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DBTableEntry);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DBTableEntry), ((struct DBTableEntry *)__ecereTemp1)->type = 0, ((struct DBTableEntry *)__ecereTemp1)->dataType = type, ((struct DBTableEntry *)__ecereTemp1)->id = id, ((struct DBTableEntry *)__ecereTemp1)->name = name, ((struct DBTableEntry *)__ecereTemp1));
+__ecereInstance1->type = 0, __ecereInstance1->dataType = type, __ecereInstance1->id = id, __ecereInstance1->name = name, __ecereInstance1;
+});
 }
 
 struct DBIndexItem * MkDBIndexItem(struct Identifier * id, int order)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct DBIndexItem * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DBIndexItem);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DBIndexItem), ((struct DBIndexItem *)__ecereTemp1)->id = id, ((struct DBIndexItem *)__ecereTemp1)->order = order, ((struct DBIndexItem *)__ecereTemp1));
+__ecereInstance1->id = id, __ecereInstance1->order = order, __ecereInstance1;
+});
 }
 
 struct DBTableEntry * MkDBIndexEntry(struct __ecereNameSpace__ecere__sys__OldList * items, struct Identifier * id)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct DBTableEntry * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DBTableEntry);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_DBTableEntry), ((struct DBTableEntry *)__ecereTemp1)->type = 1, ((struct DBTableEntry *)__ecereTemp1)->items = items, ((struct DBTableEntry *)__ecereTemp1)->id = id, ((struct DBTableEntry *)__ecereTemp1));
+__ecereInstance1->type = 1, __ecereInstance1->items = items, __ecereInstance1->id = id, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpDBOpen(struct Expression * ds, struct Expression * dbName)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 30, ((struct Expression *)__ecereTemp1)->dbopen.ds = ds, ((struct Expression *)__ecereTemp1)->dbopen.name = dbName, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 30, __ecereInstance1->dbopen.ds = ds, __ecereInstance1->dbopen.name = dbName, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpDBField(char * table, struct Identifier * id)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 31, ((struct Expression *)__ecereTemp1)->db.table = table, ((struct Expression *)__ecereTemp1)->db.id = id, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 31, __ecereInstance1->db.table = table, __ecereInstance1->db.id = id, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpDBIndex(char * table, struct Identifier * id)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 33, ((struct Expression *)__ecereTemp1)->db.table = table, ((struct Expression *)__ecereTemp1)->db.id = id, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 33, __ecereInstance1->db.table = table, __ecereInstance1->db.id = id, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpDBTable(char * table)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 32, ((struct Expression *)__ecereTemp1)->db.table = table, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 32, __ecereInstance1->db.table = table, __ecereInstance1;
+});
 }
 
 struct Expression * MkExpArray(struct __ecereNameSpace__ecere__sys__OldList * expressions)
 {
-void * __ecereTemp1;
+return __extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
 
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 37, ((struct Expression *)__ecereTemp1)->list = expressions, ((struct Expression *)__ecereTemp1));
+__ecereInstance1->type = 37, __ecereInstance1->list = expressions, __ecereInstance1;
+});
 }
 
 extern struct External * curExternal;
index 3e2a107..69b3bcc 100644 (file)
@@ -1183,8 +1183,6 @@ extern struct Specifier * MkSpecifierExtended(struct ExtDecl * extDecl);
 
 struct Specifier * CopySpecifier(struct Specifier * spec)
 {
-void * __ecereTemp1;
-
 if(spec)
 switch(spec->type)
 {
@@ -1233,7 +1231,11 @@ return copy;
 case 7:
 return MkSpecifierSubClass(CopySpecifier(spec->_class));
 case 8:
-return (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier), ((struct Specifier *)__ecereTemp1)->loc = spec->loc, ((struct Specifier *)__ecereTemp1)->type = 8, ((struct Specifier *)__ecereTemp1)->templateParameter = spec->templateParameter, ((struct Specifier *)__ecereTemp1));
+return __extension__ ({
+struct Specifier * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Specifier);
+
+__ecereInstance1->loc = spec->loc, __ecereInstance1->type = 8, __ecereInstance1->templateParameter = spec->templateParameter, __ecereInstance1;
+});
 case 5:
 return MkSpecifierExtended(CopyExtDecl(spec->extDecl));
 }
index 8670ab2..6e01479 100644 (file)
@@ -1201,8 +1201,6 @@ void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameS
 
 static void ProcessExpression(struct Expression * exp)
 {
-void * __ecereTemp1;
-
 switch(exp->type)
 {
 case 13:
@@ -1347,7 +1345,11 @@ struct Statement * ifDBStmt;
 struct __ecereNameSpace__ecere__sys__OldList * args;
 char numIndexesString[16];
 
-databaseOpenStmt->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = curContext, ((struct Context *)__ecereTemp1));
+databaseOpenStmt->compound.context = __extension__ ({
+struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
+
+__ecereInstance1->parent = curContext, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.declarations), MkDeclaration(MkListOne(MkSpecifierName("Database")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("db")), (((void *)0))))));
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.declarations), MkDeclaration(MkListOne(MkSpecifierName("bool")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("createNow")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("false")))))));
 args = MkList();
@@ -1361,7 +1363,11 @@ __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), CopyExpression
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("no")));
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("db")), '=', MkExpCall(MkExpMember(CopyExpression(exp->dbopen.ds), MkIdentifier("OpenDatabase")), args)))));
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkIfStmt(MkListOne(MkExpOp((((void *)0)), '!', MkExpIdentifier(MkIdentifier("db")))), compound = MkCompoundStmt((((void *)0)), MkList()), (((void *)0))));
-compound->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = databaseOpenStmt->compound.context, ((struct Context *)__ecereTemp1));
+compound->compound.context = __extension__ ({
+struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
+
+__ecereInstance1->parent = databaseOpenStmt->compound.context, __ecereInstance1;
+});
 args = MkList();
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), exp->dbopen.name);
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("create")));
@@ -1370,14 +1376,30 @@ __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*compound->compound.st
 exp->dbopen.name = (((void *)0));
 exp->dbopen.ds = (((void *)0));
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("db"))), ifDBStmt = MkCompoundStmt(MkList(), MkList()), (((void *)0))));
-ifDBStmt->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = databaseOpenStmt->compound.context, ((struct Context *)__ecereTemp1));
+ifDBStmt->compound.context = __extension__ ({
+struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
+
+__ecereInstance1->parent = databaseOpenStmt->compound.context, __ecereInstance1;
+});
 sprintf(numIndexesString, "%d", numIndexes);
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.declarations), MkDeclaration(MkListOne(MkSpecifierName("FieldIndex")), MkListOne(MkInitDeclarator(MkDeclaratorArray(MkDeclaratorIdentifier(MkIdentifier("indexes")), MkExpConstant(numIndexesString)), MkInitializerList(MkListOne(MkInitializerList(MkListOne(MkInitializerAssignment(MkExpIdentifier(MkIdentifier("null")))))))))));
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), compound = MkCompoundStmt((((void *)0)), tableStatements));
-compound->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = ifDBStmt->compound.context, ((struct Context *)__ecereTemp1));
-__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), (compound = MkCompoundStmt((((void *)0)), addFieldStatements), compound->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = ifDBStmt->compound.context, ((struct Context *)__ecereTemp1)), compound));
+compound->compound.context = __extension__ ({
+struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
+
+__ecereInstance1->parent = ifDBStmt->compound.context, __ecereInstance1;
+});
+__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), (compound = MkCompoundStmt((((void *)0)), addFieldStatements), compound->compound.context = __extension__ ({
+struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
+
+__ecereInstance1->parent = ifDBStmt->compound.context, __ecereInstance1;
+}), compound));
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->compound.statements), compound = MkCompoundStmt((((void *)0)), indexStatements));
-compound->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = ifDBStmt->compound.context, ((struct Context *)__ecereTemp1));
+compound->compound.context = __extension__ ({
+struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
+
+__ecereInstance1->parent = ifDBStmt->compound.context, __ecereInstance1;
+});
 exp->type = 25;
 exp->compound = databaseOpenStmt;
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->compound.statements), MkExpressionStmt(MkListOne(MkExpIdentifier(MkIdentifier("db")))));
@@ -1845,7 +1867,6 @@ unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct _
 
 static void ProcessDBTable(struct DBTableDef * table)
 {
-void * __ecereTemp1;
 struct __ecereNameSpace__ecere__sys__OldList * rowClassDefs = MkList(), * idClassDefs = (((void *)0));
 char tableName[1024];
 char rowClassName[1024];
@@ -1937,7 +1958,11 @@ numIndexes = ((numIndexes > 1) ? numIndexes : 1);
 isIndex = 0x1;
 indexed = 0x1;
 sprintf(name, "_%s", entry->id->string);
-curContext = rowSet->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = globalContext, ((struct Context *)__ecereTemp1));
+curContext = rowSet->compound.context = __extension__ ({
+struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
+
+__ecereInstance1->parent = globalContext, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("Find")), args = MkList()))));
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("middle")));
@@ -1955,7 +1980,11 @@ if(rowClassDefs)
 struct Statement * rowSet = MkCompoundStmt(MkList(), MkList()), * rowGet = MkCompoundStmt(MkList(), MkList());
 struct ClassDef * def;
 
-curContext = rowGet->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = globalContext, ((struct Context *)__ecereTemp1));
+curContext = rowGet->compound.context = __extension__ ({
+struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
+
+__ecereInstance1->parent = globalContext, __ecereInstance1;
+});
 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
 {
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(spec->name), MkExpIdentifier(MkIdentifier("d")), (((void *)0)))));
@@ -1965,7 +1994,11 @@ else
 struct Expression * exp;
 
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.declarations), MkDeclaration(CopyList(entry->dataType->qualifiers, CopySpecifier), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0"))))));
-exp->destType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->kind = 3, ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+exp->destType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->kind = 3, __ecereInstance1->refCount = 1, __ecereInstance1;
+});
 }
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("GetData")), args = MkList()))));
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
@@ -1976,7 +2009,11 @@ __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.stat
 }
 else
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d")))));
-curContext = rowSet->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = globalContext, ((struct Context *)__ecereTemp1));
+curContext = rowSet->compound.context = __extension__ ({
+struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
+
+__ecereInstance1->parent = globalContext, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("SetData")), args = MkList()))));
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value")));
@@ -2059,7 +2096,11 @@ if(idClassDefs && spec)
 struct Statement * idSet = MkCompoundStmt(MkList(), MkList()), * idGet = MkCompoundStmt(MkList(), MkList());
 struct ClassDef * def;
 
-curContext = idGet->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = globalContext, ((struct Context *)__ecereTemp1));
+curContext = idGet->compound.context = __extension__ ({
+struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
+
+__ecereInstance1->parent = globalContext, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(rowClassName), MkExpIdentifier(MkIdentifier("r")), MkListOne(MkMembersInitList(MkListOne(MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("this"))))))))));
 if(spec->type == 1 && spec->symbol && spec->symbol->registered && spec->symbol->registered->type == 1)
 {
@@ -2070,7 +2111,11 @@ else
 struct Expression * exp;
 
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.declarations), MkDeclaration(CopyList(entry->dataType->qualifiers, CopySpecifier), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0"))))));
-exp->destType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->kind = 3, ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+exp->destType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->kind = 3, __ecereInstance1->refCount = 1, __ecereInstance1;
+});
 }
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("GetData")), args = MkList()))));
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
@@ -2082,7 +2127,11 @@ __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.state
 }
 else
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d")))));
-curContext = idSet->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = globalContext, ((struct Context *)__ecereTemp1));
+curContext = idSet->compound.context = __extension__ ({
+struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
+
+__ecereInstance1->parent = globalContext, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(rowClassName), MkExpIdentifier(MkIdentifier("r")), MkListOne(MkMembersInitList(MkListOne(MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("this"))))))))));
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("SetData")), args = MkList()))));
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID)));
index a6bc2a6..ea3eb94 100644 (file)
@@ -1022,8 +1022,6 @@ extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpa
 
 static void AddDefinitions(struct __ecereNameSpace__ecere__com__Class * regClass, struct __ecereNameSpace__ecere__com__DataMember * member, struct __ecereNameSpace__ecere__sys__OldList * definitions)
 {
-void * __ecereTemp1;
-
 if(definitions != (((void *)0)))
 {
 struct ClassDef * def;
@@ -1219,7 +1217,11 @@ if(prop)
 if(inCompiler)
 prop->IsSet = (void *)propertyDef->issetStmt;
 prop->compiled = 0x0;
-prop->symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString(propertyDef->symbol->string), ((struct Symbol *)__ecereTemp1)->id = propertyDef->symbol->id, ((struct Symbol *)__ecereTemp1)->type = propertyDef->symbol->type, ((struct Symbol *)__ecereTemp1));
+prop->symbol = __extension__ ({
+struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
+
+__ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(propertyDef->symbol->string), __ecereInstance1->id = propertyDef->symbol->id, __ecereInstance1->type = propertyDef->symbol->type, __ecereInstance1;
+});
 ((struct Symbol *)prop->symbol)->propCategory = propertyDef->category;
 propertyDef->category = (((void *)0));
 if(propertyDef->isWatchable)
@@ -1346,7 +1348,6 @@ void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameS
 
 static void ProcessClass(int classType, struct __ecereNameSpace__ecere__sys__OldList * definitions, struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs, struct __ecereNameSpace__ecere__sys__OldList * enumValues, struct Location * loc, struct __ecereNameSpace__ecere__sys__OldList * defs, void * after, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators, int declMode)
 {
-void * __ecereTemp1;
 struct __ecereNameSpace__ecere__com__Class * regClass;
 struct ClassDef * def;
 unsigned int redefinition = 0x0;
@@ -1496,7 +1497,11 @@ Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Redef
 }
 if(method && (method->type != 1 || method->_class == regClass))
 {
-method->symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString(func->declarator->symbol->string), ((struct Symbol *)__ecereTemp1)->id = func->declarator->symbol->id, ((struct Symbol *)__ecereTemp1)->type = func->declarator->symbol->type, ((struct Symbol *)__ecereTemp1)->method = method, ((struct Symbol *)__ecereTemp1));
+method->symbol = __extension__ ({
+struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
+
+__ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(func->declarator->symbol->string), __ecereInstance1->id = func->declarator->symbol->id, __ecereInstance1->type = func->declarator->symbol->type, __ecereInstance1->method = method, __ecereInstance1;
+});
 if(func->declarator->symbol->type)
 func->declarator->symbol->type->refCount++;
 func->declarator->symbol->method = method;
index 67c7b6c..3f65b77 100644 (file)
@@ -998,7 +998,6 @@ extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpa
 
 unsigned int LoadSymbols(char * fileName, int importType, unsigned int loadDllOnly)
 {
-void * __ecereTemp1;
 struct __ecereNameSpace__ecere__com__Instance * f = __ecereNameSpace__ecere__sys__FileOpenBuffered(fileName, 1);
 unsigned int globalInstance = 0x0;
 
@@ -1528,7 +1527,11 @@ if(c - start)
 data = (struct GlobalData *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*nameSpace).functions, name + start);
 if(!data)
 {
-data = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_GlobalData), ((struct GlobalData *)__ecereTemp1)->fullName = __ecereNameSpace__ecere__sys__CopyString(name), ((struct GlobalData *)__ecereTemp1)->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(line), ((struct GlobalData *)__ecereTemp1)->module = privateModule, ((struct GlobalData *)__ecereTemp1));
+data = __extension__ ({
+struct GlobalData * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_GlobalData);
+
+__ecereInstance1->fullName = __ecereNameSpace__ecere__sys__CopyString(name), __ecereInstance1->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(line), __ecereInstance1->module = privateModule, __ecereInstance1;
+});
 data->key = (uintptr_t)(data->fullName + start);
 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&(*nameSpace).functions, (struct __ecereNameSpace__ecere__sys__BTNode *)data);
 }
@@ -1696,7 +1699,6 @@ unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_Next();
 
 void ImportModule(char * name, int importType, int importAccess, unsigned int loadDllOnly)
 {
-void * __ecereTemp1;
 struct ImportedModule * module = (((void *)0));
 char moduleName[274];
 
@@ -1727,10 +1729,18 @@ if(!module)
 {
 if(precompDefines)
 {
-module = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ImportedModule), ((struct ImportedModule *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(moduleName), ((struct ImportedModule *)__ecereTemp1)->type = 0, ((struct ImportedModule *)__ecereTemp1)->importType = importType, ((struct ImportedModule *)__ecereTemp1)->importAccess = importAccess, ((struct ImportedModule *)__ecereTemp1));
+module = __extension__ ({
+struct ImportedModule * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ImportedModule);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(moduleName), __ecereInstance1->type = 0, __ecereInstance1->importType = importType, __ecereInstance1->importAccess = importAccess, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*precompDefines), module);
 }
-module = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ImportedModule), ((struct ImportedModule *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(moduleName), ((struct ImportedModule *)__ecereTemp1)->type = 0, ((struct ImportedModule *)__ecereTemp1)->importType = importType, ((struct ImportedModule *)__ecereTemp1)->importAccess = importAccess, ((struct ImportedModule *)__ecereTemp1));
+module = __extension__ ({
+struct ImportedModule * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ImportedModule);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(moduleName), __ecereInstance1->type = 0, __ecereInstance1->importType = importType, __ecereInstance1->importAccess = importAccess, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName((&*defines), module);
 }
 module->dllOnly = loadDllOnly;
@@ -1791,10 +1801,18 @@ if(!module)
 {
 if(precompDefines)
 {
-module = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ImportedModule), ((struct ImportedModule *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(moduleName), ((struct ImportedModule *)__ecereTemp1)->type = 0, ((struct ImportedModule *)__ecereTemp1)->importType = importType, ((struct ImportedModule *)__ecereTemp1)->importAccess = importAccess, ((struct ImportedModule *)__ecereTemp1));
+module = __extension__ ({
+struct ImportedModule * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ImportedModule);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(moduleName), __ecereInstance1->type = 0, __ecereInstance1->importType = importType, __ecereInstance1->importAccess = importAccess, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*precompDefines), module);
 }
-module = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ImportedModule), ((struct ImportedModule *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(moduleName), ((struct ImportedModule *)__ecereTemp1)->type = 0, ((struct ImportedModule *)__ecereTemp1)->importType = importType, ((struct ImportedModule *)__ecereTemp1)->importAccess = importAccess, ((struct ImportedModule *)__ecereTemp1));
+module = __extension__ ({
+struct ImportedModule * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ImportedModule);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(moduleName), __ecereInstance1->type = 0, __ecereInstance1->importType = importType, __ecereInstance1->importAccess = importAccess, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName((&*defines), module);
 }
 module->dllOnly = loadDllOnly;
index 574bca6..445a509 100644 (file)
@@ -1715,7 +1715,6 @@ void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Clear(struct __ecereNam
 
 static void ProcessClass(int classType, struct __ecereNameSpace__ecere__sys__OldList * definitions, struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs, struct __ecereNameSpace__ecere__sys__OldList * enumValues, struct Location * loc, struct __ecereNameSpace__ecere__sys__OldList * defs, void * after, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators, struct ExtDecl * extDecl)
 {
-void * __ecereTemp1;
 char structName[1024];
 char className[1024];
 char constructorName[1024];
@@ -2038,7 +2037,11 @@ body = MkCompoundStmt(declarations, statements);
 PopContext(context);
 body->compound.context = context;
 decl = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(destructorName)), (((void *)0)));
-decl->symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->id = symbol->id, ((struct Symbol *)__ecereTemp1)->idCode = symbol->idCode, ((struct Symbol *)__ecereTemp1));
+decl->symbol = __extension__ ({
+struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
+
+__ecereInstance1->id = symbol->id, __ecereInstance1->idCode = symbol->idCode, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), decl->symbol);
 function = MkClassFunction(specs, (((void *)0)), decl, (((void *)0)));
 ProcessClassFunctionBody(function, body);
index f65c46f..b4f6f22 100644 (file)
@@ -1365,8 +1365,6 @@ extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpa
 
 void CreateRegisterModuleBody()
 {
-void * __ecereTemp1;
-
 if(!registerModuleBody && inCompiler)
 {
 char registerName[1024], moduleName[274];
@@ -1375,7 +1373,11 @@ struct Declarator * declarator;
 struct TypeName * moduleParam;
 
 registerModuleBody = MkCompoundStmt(MkList(), MkList());
-registerModuleBody->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = globalContext, ((struct Context *)__ecereTemp1));
+registerModuleBody->compound.context = __extension__ ({
+struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
+
+__ecereInstance1->parent = globalContext, __ecereInstance1;
+});
 ListAdd(registerModuleBody->compound.declarations, MkDeclaration(MkListOne(MkSpecifierName("ecere::com::Class")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("class")), (((void *)0))))));
 specifiers = MkList();
 ListAdd(specifiers, MkSpecifier(VOID));
@@ -1405,7 +1407,11 @@ struct Declarator * declarator;
 struct TypeName * moduleParam;
 
 unregisterModuleBody = MkCompoundStmt(MkList(), MkList());
-unregisterModuleBody->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = globalContext, ((struct Context *)__ecereTemp1));
+unregisterModuleBody->compound.context = __extension__ ({
+struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
+
+__ecereInstance1->parent = globalContext, __ecereInstance1;
+});
 specifiers = MkList();
 ListAdd(specifiers, MkSpecifier(VOID));
 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
@@ -2108,7 +2114,6 @@ extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpac
 
 static void ProcessClass(int classType, struct __ecereNameSpace__ecere__sys__OldList * definitions, struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs, struct __ecereNameSpace__ecere__sys__OldList * enumValues, struct __ecereNameSpace__ecere__sys__OldList * defs, struct External * external, int declMode)
 {
-void * __ecereTemp1;
 struct ClassDef * def;
 struct __ecereNameSpace__ecere__com__Class * regClass = symbol->registered;
 
@@ -2185,7 +2190,11 @@ strcat(watcherName, propID->string);
 decl = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(watcherName)), MkListOne(MkTypeName(MkListOne(MkSpecifier(VOID)), (((void *)0)))));
 func = MkClassFunction(MkListOne(MkSpecifier(VOID)), (((void *)0)), decl, (((void *)0)));
 ProcessClassFunctionBody(func, propWatch->compound);
-decl->symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->id = symbol->id, ((struct Symbol *)__ecereTemp1)->idCode = symbol->idCode, ((struct Symbol *)__ecereTemp1));
+decl->symbol = __extension__ ({
+struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
+
+__ecereInstance1->id = symbol->id, __ecereInstance1->idCode = symbol->idCode, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), decl->symbol);
 func->id = symbol->id;
 func->idCode = symbol->idCode;
@@ -2428,7 +2437,11 @@ ListAdd(args, MkExpString(string));
 ListAdd(args, MkExpConstant("0"));
 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
-exp->expType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+exp->expType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1;
+});
 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
 ListAdd(registerModuleBody->compound.statements, stmt);
 }
@@ -2465,7 +2478,11 @@ ListAdd(args, MkExpString(string));
 if(id && external->function->body)
 {
 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
-exp->expType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+exp->expType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1;
+});
 }
 else
 {
@@ -2522,7 +2539,11 @@ ListAdd(args, MkExpString(string));
 if(id && external->function->body)
 {
 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
-exp->expType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+exp->expType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1;
+});
 }
 else
 {
index e778911..0618526 100644 (file)
@@ -3084,7 +3084,6 @@ void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameS
 
 void DeclareProperty(struct __ecereNameSpace__ecere__com__Property * prop, char * setName, char * getName)
 {
-void * __ecereTemp1;
 struct Symbol * symbol = prop->symbol;
 char propName[1024];
 
@@ -3127,11 +3126,19 @@ if(prop->_class->module)
 module = FindModule(prop->_class->module);
 else
 module = mainModule;
-classSym->_import = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassImport), ((struct ClassImport *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(prop->_class->fullName), ((struct ClassImport *)__ecereTemp1)->isRemote = prop->_class->isRemote, ((struct ClassImport *)__ecereTemp1));
+classSym->_import = __extension__ ({
+struct ClassImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassImport);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(prop->_class->fullName), __ecereInstance1->isRemote = prop->_class->isRemote, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&module->classes, classSym->_import);
 }
 symbol = prop->symbol = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
-symbol->_import = (struct ClassImport *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_PropertyImport), ((struct PropertyImport *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(prop->name), ((struct PropertyImport *)__ecereTemp1)->isVirtual = 0x0, ((struct PropertyImport *)__ecereTemp1)->hasSet = prop->Set ? 0x1 : 0x0, ((struct PropertyImport *)__ecereTemp1)->hasGet = prop->Get ? 0x1 : 0x0, ((struct PropertyImport *)__ecereTemp1));
+symbol->_import = (struct ClassImport *)__extension__ ({
+struct PropertyImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_PropertyImport);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(prop->name), __ecereInstance1->isVirtual = 0x0, __ecereInstance1->hasSet = prop->Set ? 0x1 : 0x0, __ecereInstance1->hasGet = prop->Get ? 0x1 : 0x0, __ecereInstance1;
+});
 if(classSym)
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classSym->_import->properties, symbol->_import);
 }
@@ -3325,7 +3332,6 @@ symbol->id = curExternal->symbol->idCode;
 
 struct Type * Dereference(struct Type * source)
 {
-void * __ecereTemp1;
 struct Type * type = (((void *)0));
 
 if(source)
@@ -3337,7 +3343,11 @@ source->type->refCount++;
 }
 else if(source->kind == 8 && !strcmp(source->_class->string, "String"))
 {
-type = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->kind = 1, ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+type = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->kind = 1, __ecereInstance1->refCount = 1, __ecereInstance1;
+});
 }
 else if(source->kind == 8 && source->_class && source->_class->registered && source->_class->registered->type == 5)
 {
@@ -3352,12 +3362,15 @@ return type;
 
 static struct Type * Reference(struct Type * source)
 {
-void * __ecereTemp1;
 struct Type * type = (((void *)0));
 
 if(source)
 {
-type = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->kind = 13, ((struct Type *)__ecereTemp1)->type = source, ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+type = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->kind = 13, __ecereInstance1->type = source, __ecereInstance1->refCount = 1, __ecereInstance1;
+});
 source->refCount++;
 }
 return type;
@@ -3986,7 +3999,6 @@ unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(struct _
 
 struct Context * SetupTemplatesContext(struct __ecereNameSpace__ecere__com__Class * _class)
 {
-void * __ecereTemp1;
 struct Context * context = PushContext();
 
 context->templateTypesOnly = 0x1;
@@ -4021,9 +4033,17 @@ struct TemplatedType * type;
 
 if(!param)
 {
-p->param = param = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TemplateParameter), ((struct TemplateParameter *)__ecereTemp1)->identifier = MkIdentifier(p->name), ((struct TemplateParameter *)__ecereTemp1)->type = p->type, ((struct TemplateParameter *)__ecereTemp1)->dataTypeString = p->dataTypeString, ((struct TemplateParameter *)__ecereTemp1));
+p->param = param = __extension__ ({
+struct TemplateParameter * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TemplateParameter);
+
+__ecereInstance1->identifier = MkIdentifier(p->name), __ecereInstance1->type = p->type, __ecereInstance1->dataTypeString = p->dataTypeString, __ecereInstance1;
+});
 }
-type = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TemplatedType), ((struct TemplatedType *)__ecereTemp1)->key = (uintptr_t)p->name, ((struct TemplatedType *)__ecereTemp1)->param = param, ((struct TemplatedType *)__ecereTemp1));
+type = __extension__ ({
+struct TemplatedType * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TemplatedType);
+
+__ecereInstance1->key = (uintptr_t)p->name, __ecereInstance1->param = param, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&curContext->templateTypes, (struct __ecereNameSpace__ecere__sys__BTNode *)type);
 }
 }
@@ -4096,7 +4116,6 @@ void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNa
 
 void DeclareMethod(struct __ecereNameSpace__ecere__com__Method * method, char * name)
 {
-void * __ecereTemp1;
 struct Symbol * symbol = method->symbol;
 
 if(!symbol || (!symbol->pointerExternal && method->type == 1) || symbol->id > (curExternal ? curExternal->symbol->idCode : -1))
@@ -4123,7 +4142,11 @@ if(method->_class->module && ((struct __ecereNameSpace__ecere__com__Module *)(((
 module = FindModule(method->_class->module);
 else
 module = mainModule;
-classSym->_import = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassImport), ((struct ClassImport *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(method->_class->fullName), ((struct ClassImport *)__ecereTemp1)->isRemote = method->_class->isRemote, ((struct ClassImport *)__ecereTemp1));
+classSym->_import = __extension__ ({
+struct ClassImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassImport);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(method->_class->fullName), __ecereInstance1->isRemote = method->_class->isRemote, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&module->classes, classSym->_import);
 }
 if(!symbol)
@@ -4132,7 +4155,11 @@ symbol = method->symbol = __ecereNameSpace__ecere__com__eInstance_New(__ecereCla
 }
 if(!symbol->_import)
 {
-symbol->_import = (struct ClassImport *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_MethodImport), ((struct MethodImport *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(method->name), ((struct MethodImport *)__ecereTemp1)->isVirtual = method->type == 1, ((struct MethodImport *)__ecereTemp1));
+symbol->_import = (struct ClassImport *)__extension__ ({
+struct MethodImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_MethodImport);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(method->name), __ecereInstance1->isVirtual = method->type == 1, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classSym->_import->methods, symbol->_import);
 }
 if(!symbol)
@@ -4385,7 +4412,6 @@ char *  name;
 
 unsigned int DeclareFunction(struct __ecereNameSpace__ecere__com__GlobalFunction * function, char * name)
 {
-void * __ecereTemp1;
 struct Symbol * symbol = function->symbol;
 
 if(curExternal && (!symbol || symbol->id > curExternal->symbol->idCode))
@@ -4410,7 +4436,11 @@ if(module->name)
 {
 if(!function->dataType->dllExport)
 {
-symbol->_import = (struct ClassImport *)(__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_FunctionImport), ((struct FunctionImport *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(function->name), ((struct FunctionImport *)__ecereTemp1));
+symbol->_import = (struct ClassImport *)__extension__ ({
+struct FunctionImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_FunctionImport);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(function->name), __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&module->functions, symbol->_import);
 }
 }
@@ -5163,7 +5193,6 @@ extern struct Expression * MkExpBrackets(struct __ecereNameSpace__ecere__sys__Ol
 
 unsigned int MatchTypeExpression(struct Expression * sourceExp, struct Type * dest, struct __ecereNameSpace__ecere__sys__OldList * conversions, unsigned int skipUnitBla)
 {
-void * __ecereTemp1;
 struct Type * source = sourceExp->expType;
 struct Type * realDest = dest;
 struct Type * backupSourceExpType = (((void *)0));
@@ -5209,7 +5238,11 @@ value = -strtoull(sourceExp->op.exp2->constant, (((void *)0)), 0);
 if(dest->kind != 8 && source->kind == 8 && source->_class && source->_class->registered && !strcmp(source->_class->registered->fullName, "ecere::com::unichar"))
 {
 FreeType(source);
-source = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->kind = 3, ((struct Type *)__ecereTemp1)->isSigned = 0x0, ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+source = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->kind = 3, __ecereInstance1->isSigned = 0x0, __ecereInstance1->refCount = 1, __ecereInstance1;
+});
 }
 if(dest->kind == 8)
 {
@@ -11774,7 +11807,6 @@ extern char *  QMkString(char *  source);
 
 static unsigned int ResolveIdWithClass(struct Expression * exp, struct __ecereNameSpace__ecere__com__Class * _class, unsigned int skipIDClassCheck)
 {
-void * __ecereTemp1;
 struct Identifier * id = exp->identifier;
 struct __ecereNameSpace__ecere__com__Method * method = (((void *)0));
 struct __ecereNameSpace__ecere__com__Property * prop = (((void *)0));
@@ -11822,7 +11854,11 @@ return 0x1;
 if((method = __ecereNameSpace__ecere__com__eClass_FindMethod(_class, id->string, privateModule)))
 {
 ProcessMethodType(method);
-exp->expType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1)->kind = 16, ((struct Type *)__ecereTemp1)->method = method, ((struct Type *)__ecereTemp1)->methodClass = (skipIDClassCheck || (id && id->_class)) ? _class : (((void *)0)), ((struct Type *)__ecereTemp1));
+exp->expType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1->kind = 16, __ecereInstance1->method = method, __ecereInstance1->methodClass = (skipIDClassCheck || (id && id->_class)) ? _class : (((void *)0)), __ecereInstance1;
+});
 return 0x1;
 }
 else if((prop = __ecereNameSpace__ecere__com__eClass_FindProperty(_class, id->string, privateModule)))
@@ -12231,8 +12267,6 @@ void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Clear(struct __ecereNam
 
 void ProcessExpressionType(struct Expression * exp)
 {
-void * __ecereTemp2;
-void * __ecereTemp1;
 unsigned int unresolved = 0x0;
 struct Location oldyylloc = yylloc;
 unsigned int notByReference = 0x0;
@@ -12549,20 +12583,36 @@ break;
 case 3:
 {
 exp->isConstant = 0x1;
-exp->expType = (__ecereTemp2 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp2)->refCount = 1, ((struct Type *)__ecereTemp2)->kind = 13, ((struct Type *)__ecereTemp2)->type = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1)->kind = 1, ((struct Type *)__ecereTemp1)->constant = 0x1, ((struct Type *)__ecereTemp1)), ((struct Type *)__ecereTemp2));
+exp->expType = __extension__ ({
+struct Type * __ecereInstance2 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance2->refCount = 1, __ecereInstance2->kind = 13, __ecereInstance2->type = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1->kind = 1, __ecereInstance1->constant = 0x1, __ecereInstance1;
+}), __ecereInstance2;
+});
 break;
 }
 case 13:
 case 28:
 ProcessExpressionType(exp->_new.size);
-exp->expType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1)->kind = 13, ((struct Type *)__ecereTemp1)->type = ProcessType(exp->_new.typeName->qualifiers, exp->_new.typeName->declarator), ((struct Type *)__ecereTemp1));
+exp->expType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1->kind = 13, __ecereInstance1->type = ProcessType(exp->_new.typeName->qualifiers, exp->_new.typeName->declarator), __ecereInstance1;
+});
 DeclareType(exp->expType->type, 0x0, 0x0);
 break;
 case 14:
 case 29:
 ProcessExpressionType(exp->_renew.size);
 ProcessExpressionType(exp->_renew.exp);
-exp->expType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1)->kind = 13, ((struct Type *)__ecereTemp1)->type = ProcessType(exp->_renew.typeName->qualifiers, exp->_renew.typeName->declarator), ((struct Type *)__ecereTemp1));
+exp->expType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1->kind = 13, __ecereInstance1->type = ProcessType(exp->_renew.typeName->qualifiers, exp->_renew.typeName->declarator), __ecereInstance1;
+});
 DeclareType(exp->expType->type, 0x0, 0x0);
 break;
 case 4:
@@ -12794,7 +12844,11 @@ type2 = exp->op.exp2->expType;
 dummy->kind = 0;
 if(exp->op.op == SIZEOF)
 {
-exp->expType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1)->kind = 3, ((struct Type *)__ecereTemp1));
+exp->expType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1->kind = 3, __ecereInstance1;
+});
 exp->isConstant = 0x1;
 }
 else if(exp->op.op == '*' && !exp->op.exp1)
@@ -12904,7 +12958,11 @@ else if(exp->op.op == '-')
 {
 if(MatchTypes(type1->type, type2->type, (((void *)0)), (((void *)0)), (((void *)0)), 0x0, 0x0, 0x0, 0x0))
 {
-exp->expType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->kind = 3, ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1));
+exp->expType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->kind = 3, __ecereInstance1->refCount = 1, __ecereInstance1;
+});
 success = 0x1;
 if(type1->type->kind == 20)
 {
@@ -13681,7 +13739,11 @@ FreeType(type);
 }
 else
 {
-functionType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 0, ((struct Type *)__ecereTemp1)->kind = 11, ((struct Type *)__ecereTemp1));
+functionType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 0, __ecereInstance1->kind = 11, __ecereInstance1;
+});
 if(exp->call.exp->type == 0)
 {
 char * string = exp->call.exp->identifier->string;
@@ -13696,7 +13758,11 @@ if(strstr(string, "__builtin_") == string)
 ;
 else
 Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "%s undefined; assuming extern returning int\n", (((void *)0))), string);
-symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString(string), ((struct Symbol *)__ecereTemp1)->type = ProcessTypeString("int()", 0x1), ((struct Symbol *)__ecereTemp1));
+symbol = __extension__ ({
+struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
+
+__ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString(string), __ecereInstance1->type = ProcessTypeString("int()", 0x1), __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
 if(strstr(symbol->string, "::"))
 globalContext->hasNameSpace = 0x1;
@@ -13710,7 +13776,11 @@ else
 Compiler_Warning(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "callable object undefined; extern assuming returning int\n", (((void *)0))));
 if(!functionType->returnType)
 {
-functionType->returnType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1)->kind = 3, ((struct Type *)__ecereTemp1));
+functionType->returnType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1->kind = 3, __ecereInstance1;
+});
 }
 }
 if(functionType && functionType->kind == 11)
@@ -14080,7 +14150,11 @@ exp->member.memberType = 2;
 }
 if(!method->dataType)
 ProcessMethodType(method);
-exp->expType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1)->kind = 16, ((struct Type *)__ecereTemp1)->method = method, ((struct Type *)__ecereTemp1));
+exp->expType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1->kind = 16, __ecereInstance1->method = method, __ecereInstance1;
+});
 exp->expType->methodClass = (id && id->_class) ? _class : (((void *)0));
 exp->expType->usedClass = _class;
 }
@@ -14198,7 +14272,11 @@ FreeType(basicType);
 basicType = ReplaceThisClassType(_class);
 }
 FreeType(exp->expType);
-exp->expType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1)->kind = 13, ((struct Type *)__ecereTemp1)->type = basicType, ((struct Type *)__ecereTemp1));
+exp->expType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1->kind = 13, __ecereInstance1->type = basicType, __ecereInstance1;
+});
 if(!exp->destType)
 {
 exp->destType = exp->expType;
@@ -14444,14 +14522,22 @@ exp->member.member = MkIdentifier("structSize");
 }
 }
 }
-exp->expType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1)->kind = 3, ((struct Type *)__ecereTemp1));
+exp->expType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1->kind = 3, __ecereInstance1;
+});
 break;
 }
 case 10:
 {
 struct Type * type = ProcessType(exp->typeName->qualifiers, exp->typeName->declarator);
 
-exp->expType = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1)->kind = 3, ((struct Type *)__ecereTemp1));
+exp->expType = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1->kind = 3, __ecereInstance1;
+});
 exp->isConstant = 0x1;
 DeclareType(type, 0x0, 0x0);
 FreeType(type);
@@ -14563,8 +14649,8 @@ if(exp->destType)
 exp->destType->refCount++;
 }
 ProcessStatement(exp->compound);
-exp->expType = ((struct Expression *)(*last->expressions).last)->expType;
-if(((struct Expression *)(*last->expressions).last)->expType)
+exp->expType = (last->expressions && (*last->expressions).last) ? ((struct Expression *)(*last->expressions).last)->expType : (((void *)0));
+if(exp->expType)
 exp->expType->refCount++;
 }
 break;
@@ -14709,7 +14795,11 @@ ListAdd(structInitializers, MkInitializerAssignment(MkExpConstant("0")));
 ProcessExpressionType(((struct Initializer *)(*structInitializers).last)->exp);
 ListAdd(structInitializers, MkInitializerAssignment(MkExpExtensionInitializer(MkTypeName(specs, MkDeclaratorArray(decl, (((void *)0)))), MkInitializerList(initializers))));
 ProcessExpressionType(((struct Initializer *)(*structInitializers).last)->exp);
-ListAdd(structInitializers, MkInitializerAssignment((__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression), ((struct Expression *)__ecereTemp1)->type = 2, ((struct Expression *)__ecereTemp1)->constant = __ecereNameSpace__ecere__com__PrintString(__ecereClass_int, &(*initializers).count, (void *)0), ((struct Expression *)__ecereTemp1))));
+ListAdd(structInitializers, MkInitializerAssignment(__extension__ ({
+struct Expression * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Expression);
+
+__ecereInstance1->type = 2, __ecereInstance1->constant = __ecereNameSpace__ecere__com__PrintString(__ecereClass_int, &(*initializers).count, (void *)0), __ecereInstance1;
+})));
 ProcessExpressionType(((struct Initializer *)(*structInitializers).last)->exp);
 ListAdd(structInitializers, MkInitializerAssignment(MkExpClass(CopyList(specs, CopySpecifier), CopyDeclarator(decl))));
 ProcessExpressionType(((struct Initializer *)(*structInitializers).last)->exp);
@@ -16116,8 +16206,6 @@ extern struct Statement * MkFireWatchersStmt(struct Expression * object, struct
 
 static void ProcessFunction(struct FunctionDefinition * function)
 {
-void * __ecereTemp2;
-void * __ecereTemp1;
 struct Identifier * id = GetDeclId(function->declarator);
 struct Symbol * symbol = function->declarator ? function->declarator->symbol : (((void *)0));
 struct Type * type = symbol ? symbol->type : (((void *)0));
@@ -16199,7 +16287,11 @@ if(type->classObjectType != 1)
 if(type->byReference || _class->type == 3 || _class->type == 1000 || _class->type == 4 || _class->type == 2)
 thisParam->declarator = MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), thisParam->declarator);
 }
-thisParam = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TypeName), ((struct TypeName *)__ecereTemp1)->declarator = MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), MkDeclaratorIdentifier(MkIdentifier("class"))), ((struct TypeName *)__ecereTemp1)->qualifiers = MkListOne(MkStructOrUnion(3, MkIdentifier("__ecereNameSpace__ecere__com__Class"), (((void *)0)))), ((struct TypeName *)__ecereTemp1));
+thisParam = __extension__ ({
+struct TypeName * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TypeName);
+
+__ecereInstance1->declarator = MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), MkDeclaratorIdentifier(MkIdentifier("class"))), __ecereInstance1->qualifiers = MkListOne(MkStructOrUnion(3, MkIdentifier("__ecereNameSpace__ecere__com__Class"), (((void *)0)))), __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*funcDecl->function.parameters), (((void *)0)), thisParam);
 }
 }
@@ -16239,7 +16331,11 @@ if(function->body)
 {
 if(type->classObjectType != 1)
 {
-thisSymbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->string = __ecereNameSpace__ecere__sys__CopyString("this"), ((struct Symbol *)__ecereTemp1)->type = classSym ? MkClassType(classSym->string) : (((void *)0)), ((struct Symbol *)__ecereTemp1));
+thisSymbol = __extension__ ({
+struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
+
+__ecereInstance1->string = __ecereNameSpace__ecere__sys__CopyString("this"), __ecereInstance1->type = classSym ? MkClassType(classSym->string) : (((void *)0)), __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&function->body->compound.context->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)thisSymbol);
 if(typedObject && thisSymbol->type)
 {
@@ -16297,7 +16393,15 @@ else
 exp = QBrackets(MkExpOp(bytePtr, '+', MkExpPointer(QMkExpId(className), MkIdentifier("offset"))));
 }
 exp = QBrackets(QMkExpCond(QMkExpId("this"), exp, MkExpConstant("0")));
-exp->expType = (__ecereTemp2 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp2)->refCount = 1, ((struct Type *)__ecereTemp2)->kind = 13, ((struct Type *)__ecereTemp2)->type = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), ((struct Type *)__ecereTemp1)->refCount = 1, ((struct Type *)__ecereTemp1)->kind = 0, ((struct Type *)__ecereTemp1)), ((struct Type *)__ecereTemp2));
+exp->expType = __extension__ ({
+struct Type * __ecereInstance2 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance2->refCount = 1, __ecereInstance2->kind = 13, __ecereInstance2->type = __extension__ ({
+struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
+
+__ecereInstance1->refCount = 1, __ecereInstance1->kind = 0, __ecereInstance1;
+}), __ecereInstance2;
+});
 if(function->body)
 {
 yylloc = function->body->loc;
@@ -16496,7 +16600,6 @@ extern struct __ecereNameSpace__ecere__com__Instance * GetPrivateModule(void);
 
 void ComputeDataTypes()
 {
-void * __ecereTemp1;
 struct External * external;
 struct External * temp = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_External);
 struct External * after = (((void *)0));
@@ -16539,7 +16642,11 @@ after = external;
 }
 }
 }
-temp->symbol = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol), ((struct Symbol *)__ecereTemp1)->id = -1000, ((struct Symbol *)__ecereTemp1)->idCode = -1000, ((struct Symbol *)__ecereTemp1));
+temp->symbol = __extension__ ({
+struct Symbol * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
+
+__ecereInstance1->id = -1000, __ecereInstance1->idCode = -1000, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), after, temp);
 curExternal = temp;
 DeclareFunctionUtil("eSystem_New");
index 29937d1..5ceca3e 100644 (file)
@@ -1136,8 +1136,6 @@ extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpa
 
 static void CreateInstancesBody()
 {
-void * __ecereTemp1;
-
 if(inCompiler && !createInstancesBody)
 {
 char registerName[1024], moduleName[274];
@@ -1145,7 +1143,11 @@ struct __ecereNameSpace__ecere__sys__OldList * specifiers;
 struct Declarator * declarator;
 
 createInstancesBody = MkCompoundStmt((((void *)0)), MkList());
-createInstancesBody->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = globalContext, ((struct Context *)__ecereTemp1));
+createInstancesBody->compound.context = __extension__ ({
+struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
+
+__ecereInstance1->parent = globalContext, __ecereInstance1;
+});
 specifiers = MkList();
 ListAdd(specifiers, MkSpecifier(VOID));
 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
@@ -1162,7 +1164,11 @@ ProcessFunctionBody(function, createInstancesBody);
 ListAdd(ast, MkExternalFunction(function));
 }
 destroyInstancesBody = MkCompoundStmt((((void *)0)), MkList());
-destroyInstancesBody->compound.context = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context), ((struct Context *)__ecereTemp1)->parent = globalContext, ((struct Context *)__ecereTemp1));
+destroyInstancesBody->compound.context = __extension__ ({
+struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
+
+__ecereInstance1->parent = globalContext, __ecereInstance1;
+});
 specifiers = MkList();
 ListAdd(specifiers, MkSpecifier(VOID));
 sprintf(registerName, "__ecereDestroyModuleInstances_%s", moduleName);
@@ -1842,8 +1848,6 @@ void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Move(struct __ecereName
 
 void DeclareClass(struct Symbol * classSym, char * className)
 {
-void * __ecereTemp1;
-
 if(classSym && classSym->id == (((int)0x7fffffff)))
 {
 struct Declaration * decl;
@@ -1856,7 +1860,11 @@ if(!classSym->module)
 classSym->module = mainModule;
 if(!classSym->module)
 return ;
-classSym->_import = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassImport), ((struct ClassImport *)__ecereTemp1)->isRemote = classSym->registered ? classSym->registered->isRemote : 0x0, ((struct ClassImport *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(classSym->string), ((struct ClassImport *)__ecereTemp1));
+classSym->_import = __extension__ ({
+struct ClassImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassImport);
+
+__ecereInstance1->isRemote = classSym->registered ? classSym->registered->isRemote : 0x0, __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(classSym->string), __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classSym->module->classes, classSym->_import);
 }
 classSym->_import->itself = 0x1;
@@ -1923,6 +1931,16 @@ static struct Declaration * curDecl;
 
 static int declTempCount;
 
+extern struct Context * PushContext(void);
+
+extern struct Declaration * QMkDeclaration(char *  name, struct InitDeclarator * initDecl);
+
+extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
+
+extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
+
+extern void PopContext(struct Context * ctx);
+
 extern void FreeInstance(struct Instantiation * inst);
 
 extern struct Type * ProcessTypeString(char *  string, unsigned int staticMethod);
@@ -2178,7 +2196,7 @@ int __simpleStruct0;
 char ecereTemp[100];
 struct MembersInit * members;
 int tempCount = exp->tempCount;
-struct Expression * tmpExp;
+struct __ecereNameSpace__ecere__sys__OldList * expList;
 
 for(members = (*inst->members).first; members; members = members->next)
 {
@@ -2199,28 +2217,33 @@ tempCount = (__simpleStruct0 = member->initializer->exp->tempCount, (tempCount >
 }
 }
 if(curDecl)
-{
 tempCount = ((tempCount > declTempCount) ? tempCount : declTempCount);
-}
 tempCount++;
 curExternal->function->tempCount = (__simpleStruct0 = curExternal->function->tempCount, (__simpleStruct0 > tempCount) ? __simpleStruct0 : tempCount);
-sprintf(ecereTemp, "__ecereTemp%d", tempCount);
-instExp = MkExpBrackets(MkListOne(MkExpCast(QMkClass(inst->_class->name, (((void *)0))), (tmpExp = QMkExpId(ecereTemp), tmpExp->byReference = 0x1, tmpExp))));
+sprintf(ecereTemp, "__ecereInstance%d", tempCount);
+exp->type = 25;
+exp->compound = MkCompoundStmt((((void *)0)), (((void *)0)));
+exp->compound->compound.context = PushContext();
+exp->compound->compound.context->simpleID = exp->compound->compound.context->parent->simpleID;
+exp->compound->compound.declarations = MkListOne(QMkDeclaration(inst->_class->name, MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(ecereTemp)), MkInitializerAssignment(newCall))));
+exp->compound->compound.statements = MkListOne(MkExpressionStmt((expList = MkList())));
+instExp = QMkExpId(ecereTemp);
 instExp->tempCount = tempCount;
-exp->type = 5;
-exp->list = MkList();
-ListAdd(exp->list, MkExpOp((tmpExp = QMkExpId(ecereTemp), tmpExp->byReference = 0x1, tmpExp), '=', newCall));
 instExp->expType = MkClassType(inst->_class->name);
-ProcessInstMembers(inst, instExp, exp->list, 0x0);
+instExp->byReference = 0x1;
+ProcessInstMembers(inst, instExp, expList, 0x0);
 FreeExpression(instExp);
-ProcessExpression(tmpExp);
 if(exp->usage)
-ListAdd(exp->list, MkExpBrackets(MkListOne(MkExpCast(QMkClass(inst->_class->name, (((void *)0))), (tmpExp = QMkExpId(ecereTemp), tmpExp->byReference = 0x1, tmpExp)))));
+{
+struct Expression * tmpExp = QMkExpId(ecereTemp);
+
+tmpExp->byReference = 0x1;
+ListAdd(expList, tmpExp);
+}
 exp->tempCount = tempCount;
 if(curDecl)
-{
 declTempCount = ((declTempCount > tempCount) ? declTempCount : tempCount);
-}
+PopContext(exp->compound->compound.context);
 }
 else
 {
@@ -2513,7 +2536,7 @@ break;
 }
 case 25:
 {
-if(exp->compound->compound.statements && ((struct Statement *)(*exp->compound->compound.statements).last)->type == 3 && (*((struct Statement *)(*exp->compound->compound.statements).last)->expressions).last)
+if(exp->compound->compound.statements && ((struct Statement *)(*exp->compound->compound.statements).last)->type == 3 && ((struct Statement *)(*exp->compound->compound.statements).last)->expressions && (*((struct Statement *)(*exp->compound->compound.statements).last)->expressions).last)
 {
 ((struct Expression *)(*((struct Statement *)(*exp->compound->compound.statements).last)->expressions).last)->usage = exp->usage;
 }
@@ -2601,8 +2624,6 @@ extern struct Identifier * CopyIdentifier(struct Identifier * id);
 
 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
 
-extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
-
 extern int strcmp(const char * , const char * );
 
 extern struct Expression * MkExpInstance(struct Instantiation * inst);
@@ -3025,8 +3046,6 @@ recursionCount--;
 return 0x1;
 }
 
-extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
-
 extern void FreeList(struct __ecereNameSpace__ecere__sys__OldList * list, void (* )(void * ));
 
 static void ProcessDeclaration(struct Declaration * decl)
index 276ee39..7234632 100644 (file)
@@ -3753,30 +3753,11 @@ break;
 }
 }
 
-extern struct Declaration * QMkDeclarationBase(int base, struct InitDeclarator * initDecl);
-
 static void ProcessFunction(struct FunctionDefinition * function)
 {
 if(function->body)
 {
 ProcessStatement(function->body);
-if(function->tempCount)
-{
-struct Statement * stmt = function->body;
-int c;
-
-if(!stmt->compound.declarations)
-stmt->compound.declarations = MkList();
-curContext = stmt->compound.context;
-for(c = 1; c <= function->tempCount; c++)
-{
-char ecereTemp[100];
-
-sprintf(ecereTemp, "__ecereTemp%d", c);
-__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*stmt->compound.declarations), (((void *)0)), QMkDeclarationBase(VOID, MkInitDeclarator(QMkPtrDecl(ecereTemp), (((void *)0)))));
-}
-curContext = stmt->compound.context->parent;
-}
 }
 }
 
index fa6e18a..5a7d62e 100644 (file)
@@ -102,8 +102,8 @@ msgstr "No observer specified and not inside a _class\n"
 msgid "No observer specified and not inside a class\n"
 msgstr "No observer specified and not inside a class\n"
 
-#: ./src/pass16.ec:1910
-#: ./src/pass16.ec:1981
+#: ./src/pass16.ec:1894
+#: ./src/pass16.ec:1965
 msgid "No set defined for property %s\n"
 msgstr "No set defined for property %s\n"
 
index 7ff1b2f..d7071df 100644 (file)
@@ -9971,8 +9971,8 @@ void ProcessExpressionType(Expression exp)
                   exp.destType.refCount++;
             }
             ProcessStatement(exp.compound);
-            exp.expType = ((Expression)last.expressions->last).expType;
-            if(((Expression)last.expressions->last).expType)
+            exp.expType = (last.expressions && last.expressions->last) ? ((Expression)last.expressions->last).expType : null;
+            if(exp.expType)
                exp.expType.refCount++;
          }
          break;
index dccd8fc..ede703b 100644 (file)
@@ -1089,7 +1089,7 @@ static void ProcessExpression(Expression exp)
                      char ecereTemp[100];
                      MembersInit members;
                      int tempCount = exp.tempCount;
-                     Expression tmpExp;
+                     OldList * expList;
                
                      // Check if members use temp count...
                      for(members = inst.members->first; members; members = members.next)
@@ -1108,53 +1108,36 @@ static void ProcessExpression(Expression exp)
                         }
                      }
                      if(curDecl)
-                     {
                         tempCount = Max(tempCount, declTempCount);
-                     }
                
                      tempCount++;
                      curExternal.function.tempCount = Max(curExternal.function.tempCount, tempCount);
-                     sprintf(ecereTemp, "__ecereTemp%d", tempCount);
-
-                     // (__ecereTemp = eInstance_New(_class), __ecerePropclass_Set( ), __ecereTemp)
-               
-                     /*
-                     instExp = MkExpBrackets(MkListOne(MkExpCast(QMkClass(inst._class.name, null), (tmpExp = QMkExpId(ecereTemp), tmpExp.byReference = true, tmpExp))));
-                     //instExp = QMkExpId(ecereTemp);
-                     instExp.tempCount = tempCount;
-
-                     exp.type = bracketsExp;
-                     exp.list = MkList();
-
-                     ListAdd(exp.list, MkExpOp(instExp, '=', newCall));
-                     */
-
-                     instExp = MkExpBrackets(MkListOne(MkExpCast(QMkClass(inst._class.name, null), (tmpExp = QMkExpId(ecereTemp), tmpExp.byReference = true, tmpExp))));
-
+                     sprintf(ecereTemp, "__ecereInstance%d", tempCount);
+                     exp.type = extensionCompoundExp;
+                     exp.compound = MkCompoundStmt(null, null);
+                     exp.compound.compound.context = PushContext();
+                     exp.compound.compound.context.simpleID = exp.compound.compound.context.parent.simpleID;
+                     exp.compound.compound.declarations = MkListOne(QMkDeclaration(inst._class.name, MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(ecereTemp)), 
+                        MkInitializerAssignment(newCall))));
+                     exp.compound.compound.statements = MkListOne(MkExpressionStmt((expList = MkList())));
+
+                     instExp = QMkExpId(ecereTemp);
                      instExp.tempCount = tempCount;
-                     exp.type = bracketsExp;
-                     exp.list = MkList();
-
-                     ListAdd(exp.list,           MkExpOp((tmpExp = QMkExpId(ecereTemp), tmpExp.byReference = true, tmpExp), '=', newCall));
-
                      instExp.expType = MkClassType(inst._class.name);
-
-                     ProcessInstMembers(inst, instExp, exp.list, false);
-                  
+                     instExp.byReference = true;
+                     ProcessInstMembers(inst, instExp, expList, false);
                      FreeExpression(instExp);
 
-                     ProcessExpression(tmpExp);
-
-                     // TEST: exp.tempCount = Max(exp.tempCount, instExp.tempCount);
-
                      if(exp.usage)
-                        //ListAdd(exp.list, QMkExpId(ecereTemp));
-                        ListAdd(exp.list, MkExpBrackets(MkListOne(MkExpCast(QMkClass(inst._class.name, null), (tmpExp = QMkExpId(ecereTemp), tmpExp.byReference = true, tmpExp)))));
+                     {
+                        Expression tmpExp = QMkExpId(ecereTemp);
+                        tmpExp.byReference = true;
+                        ListAdd(expList, tmpExp);
+                     }
                      exp.tempCount = tempCount;
                      if(curDecl)
-                     {
                         declTempCount = Max(declTempCount, tempCount);
-                     }
+                     PopContext(exp.compound.compound.context);
                   }
                   else
                   {
@@ -1518,6 +1501,7 @@ static void ProcessExpression(Expression exp)
       {
          if(exp.compound.compound.statements &&
          ((Statement)exp.compound.compound.statements->last).type == expressionStmt && 
+         ((Statement)exp.compound.compound.statements->last).expressions &&
          ((Statement)exp.compound.compound.statements->last).expressions->last)
          {
             ((Expression)((Statement)exp.compound.compound.statements->last).expressions->last).usage = exp.usage;
index b77ceef..47f95cb 100644 (file)
@@ -3082,26 +3082,7 @@ static void ProcessStatement(Statement stmt)
 static void ProcessFunction(FunctionDefinition function)
 {
    if(function.body)
-   {
       ProcessStatement(function.body);
-      if(function.tempCount)
-      {
-         Statement stmt = function.body;
-         int c;
-         // Declare ecereTemp here, we need it!
-         if(!stmt.compound.declarations)
-            stmt.compound.declarations = MkList();
-         curContext = stmt.compound.context;
-         for(c = 1; c<=function.tempCount; c++)
-         {
-            char ecereTemp[100];
-            sprintf(ecereTemp, "__ecereTemp%d", c);
-            stmt.compound.declarations->Insert(null,
-               QMkDeclarationBase(VOID, MkInitDeclarator(QMkPtrDecl(ecereTemp), null)));
-         }
-         curContext = stmt.compound.context.parent;
-      }
-   }
 }
 
 static void ProcessMemberInitData(MemberInit member)