]> Nishi Git Mirror - gwion.git/commitdiff
:art: Improve scan_type
authorJérémie Astor <astor.jeremie@wanadoo.fr>
Sat, 15 Aug 2020 15:01:00 +0000 (17:01 +0200)
committerJérémie Astor <astor.jeremie@wanadoo.fr>
Sat, 15 Aug 2020 15:01:00 +0000 (17:01 +0200)
src/parse/template.c

index ec8b81802d6f101155f4d2d157dfbf36a6507f04..857cf8ad2f313f7dbe54fa8bd47d29e3dafd1bd3 100644 (file)
@@ -92,7 +92,7 @@ static ANN Type maybe_func(const Env env, const Type t, const Type_Decl* td) {
      _("type '%s' is not template. You should not provide template types"), t->name)
 }
 
-ANN Type _scan_type(const Env env, const Type t, const Type_Decl* td) {
+ANN Type _scan_type(const Env env, const Type t, Type_Decl* td) {
   if(GET_FLAG(t, template)) {
     if(GET_FLAG(t, ref) || (GET_FLAG(t, unary) && !td->types))
       return t;
@@ -101,7 +101,11 @@ ANN Type _scan_type(const Env env, const Type t, const Type_Decl* td) {
     return op_check(env, &opi);
   } else if(td->types)
     return maybe_func(env, t, td);
-  return td->xid ? nspc_lookup_type1(env->curr, td->xid) : t;
+  Type_Decl *next = td->next;
+  td->next = NULL;
+  const Type ret = find_type(env, td);
+  td->next = next;
+  return ret;
 }
 
 ANN Type scan_type(const Env env, const Type t, Type_Decl* td) {