ecere/com/templates: Tweaks to avoid 'AT' class being left declared
authorJerome St-Louis <jerome@ecere.com>
Wed, 3 Aug 2016 06:58:00 +0000 (02:58 -0400)
committerJerome St-Louis <jerome@ecere.com>
Wed, 3 Aug 2016 06:58:00 +0000 (02:58 -0400)
- Updated boostrap

compiler/bootstrap/ecc/bootstrap/ecc.c
compiler/bootstrap/ecere/bootstrap/instance.c
compiler/bootstrap/ecp/bootstrap/ecp.c
ecere/src/com/instance.ec

index 4b0507a..75752a9 100644 (file)
@@ -957,7 +957,7 @@ c++;
 else
 valid = 0;
 }
-else if(!strcmp(arg + 1, "isystem") || !strcmp(arg + 1, "isysroot"))
+else if(!strcmp(arg + 1, "isystem") || !strcmp(arg + 1, "isysroot") || !strcmp(arg + 1, "s"))
 {
 if(c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argc)
 {
index e00ee5b..4e20cdd 100644 (file)
@@ -5534,11 +5534,11 @@ switch(curParam->type)
 {
 case 0:
 argument.__anon1.__anon1.dataTypeString = __ecereNameSpace__ecere__sys__CopyString(value);
-argument.__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__System_FindClass(findModule, value, 1);
+argument.__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__System_FindClass(findModule, value, registerInternalDecl);
 if(!argument.__anon1.__anon1.dataTypeClass)
-argument.__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__System_FindClass(_class->module, value, 1);
+argument.__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__System_FindClass(_class->module, value, registerInternalDecl);
 if(!argument.__anon1.__anon1.dataTypeClass)
-argument.__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__System_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application, value, 1);
+argument.__anon1.__anon1.dataTypeClass = __ecereNameSpace__ecere__com__System_FindClass(((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application, value, registerInternalDecl);
 if(registerInternalDecl && !argument.__anon1.__anon1.dataTypeClass)
 {
 struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param;
@@ -6124,7 +6124,7 @@ static void __ecereNameSpace__ecere__com__FixDerivativesBase(struct __ecereNameS
 {
 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
 
-__ecereNameSpace__ecere__com__ComputeClassParameters(base, strchr(base->name, '<'), (((void *)0)), 1);
+__ecereNameSpace__ecere__com__ComputeClassParameters(base, strchr(base->name, '<'), (((void *)0)), base->templateClass != mod);
 for(derivative = base->derivatives.first; derivative; derivative = derivative->next)
 {
 struct __ecereNameSpace__ecere__com__Class * _class = derivative->data;
index 0f8294c..1265548 100644 (file)
@@ -2812,7 +2812,7 @@ c++;
 else
 valid = 0;
 }
-else if(!strcmp(arg + 1, "isystem") || !strcmp(arg + 1, "isysroot"))
+else if(!strcmp(arg + 1, "isystem") || !strcmp(arg + 1, "isysroot") || !strcmp(arg + 1, "s"))
 {
 if(c + 1 < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argc)
 {
index 3f947c6..4b43127 100644 (file)
@@ -2089,7 +2089,7 @@ static void FixDerivativesBase(Class base, Class mod)
 {
    OldLink derivative;
 
-   ComputeClassParameters(base, strchr(base.name, '<'), null, true);
+   ComputeClassParameters(base, strchr(base.name, '<'), null, base.templateClass != mod);
 
    for(derivative = base.derivatives.first; derivative; derivative = derivative.next)
    {
@@ -3711,11 +3711,11 @@ static void ComputeClassParameters(Class templatedClass, const char * templatePa
             {
                case type:
                   argument.dataTypeString = CopyString(value);
-                  argument.dataTypeClass = System_FindClass(findModule, value, true);
+                  argument.dataTypeClass = System_FindClass(findModule, value, registerInternalDecl);
                   if(!argument.dataTypeClass)
-                     argument.dataTypeClass = System_FindClass(_class.module, value, true);
+                     argument.dataTypeClass = System_FindClass(_class.module, value, registerInternalDecl);
                   if(!argument.dataTypeClass)
-                     argument.dataTypeClass = System_FindClass(_class.module.application, value, true);
+                     argument.dataTypeClass = System_FindClass(_class.module.application, value, registerInternalDecl);
                   if(registerInternalDecl && !argument.dataTypeClass)
                   {
                      ClassTemplateParameter param;