compiler/libec: Fixed keeping cast between long/int types
[sdk] / compiler / bootstrap / libec / bootstrap / pass1.c
index 4758c11..814947b 100644 (file)
@@ -151,10 +151,6 @@ struct ModuleImport;
 
 struct ClassImport;
 
-extern char *  strcpy(char * , const char * );
-
-extern void FullClassNameCat(char *  output, const char *  className, unsigned int includeTemplateParams);
-
 struct __ecereNameSpace__ecere__com__LinkList
 {
 void * first;
@@ -178,6 +174,10 @@ extern int sprintf(char * , const char * , ...);
 
 extern char *  QMkString(const char *  source);
 
+extern char *  strcpy(char * , const char * );
+
+extern void FullClassNameCat(char *  output, const char *  className, unsigned int includeTemplateParams);
+
 extern char *  strcat(char * , const char * );
 
 extern int strcmp(const char * , const char * );
@@ -525,10 +525,9 @@ struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
 struct Context * ctx;
 int isIterator;
 struct Expression * propCategory;
+unsigned int mustRegister;
 } __attribute__ ((gcc_struct));
 
-extern void DeclareClass(struct External * neededFor, struct Symbol * classSym, const char *  className);
-
 extern struct Symbol * FindClass(const char *  name);
 
 struct Declarator;
@@ -1075,6 +1074,7 @@ struct ExtDecl * extDecl;
 char *  name;
 struct Symbol * symbol;
 struct __ecereNameSpace__ecere__sys__OldList *  templateArgs;
+struct Specifier * nsSpec;
 } __attribute__ ((gcc_struct)) __anon1;
 struct
 {
@@ -1134,6 +1134,7 @@ int kind;
 unsigned int size;
 char *  name;
 char *  typeName;
+struct __ecereNameSpace__ecere__com__Class * thisClassFrom;
 int classObjectType;
 int alignment;
 unsigned int offset;
@@ -1154,6 +1155,7 @@ unsigned int declaredWithStruct : 1;
 unsigned int typedByReference : 1;
 unsigned int casted : 1;
 unsigned int pointerAlignment : 1;
+unsigned int isLong : 1;
 } __attribute__ ((gcc_struct));
 
 unsigned int __ecereProp_Type_Get_isPointerTypeSize(struct Type * this);
@@ -1575,14 +1577,6 @@ if(func->type)
 func->type->refCount++;
 ProcessFunctionBody(function, func->body);
 external = MkExternalFunction(function);
-if(owningClass)
-{
-char className[1024];
-
-strcpy(className, "__ecereClass_");
-FullClassNameCat(className, owningClass->fullName, 1);
-DeclareClass(external, owningClass->symbol, className);
-}
 external->symbol = func->declarator->symbol;
 external->__anon1.function->_class = func->_class;
 }
@@ -2449,7 +2443,7 @@ ProcessClassFunction(regClass, def->__anon1.function, defs, external->prev, decl
 }
 }
 }
-if(inCompiler && !symbol->notYetDeclared && regClass)
+if(inCompiler && symbol->mustRegister && regClass)
 {
 struct Statement * stmt;
 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();