]> Nishi Git Mirror - gwion.git/commitdiff
:art: Remove tflag_ctmpl
authorJérémie Astor <fennecdjay@gmail.com>
Fri, 8 Jan 2021 12:20:20 +0000 (13:20 +0100)
committerJérémie Astor <fennecdjay@gmail.com>
Fri, 8 Jan 2021 12:20:20 +0000 (13:20 +0100)
include/env/type.h
src/import/import_cdef.c
src/lib/object_op.c
src/parse/template.c
tests/new/template_class_in_template.gw

index 64068fa21578dd8ac8b6eb45dac81692c9be4865..68bbec1f11e282708acb3887643531086166ba29 100644 (file)
@@ -27,14 +27,13 @@ enum tflag {
   tflag_empty   = 1 << 7,
   tflag_ftmpl   = 1 << 8,
   tflag_ntmpl   = 1 << 9, // do NOT need types
-  tflag_ctmpl   = 1 << 10, // child template
-  tflag_udef    = 1 << 11,
-  tflag_cdef    = 1 << 12,
-  tflag_struct  = 1 << 13,
-  tflag_ctor    = 1 << 14,
-  tflag_dtor    = 1 << 15,
-  tflag_tmpl    = 1 << 16,
-  tflag_typedef = 1 << 17,
+  tflag_udef    = 1 << 10,
+  tflag_cdef    = 1 << 11,
+  tflag_struct  = 1 << 12,
+  tflag_ctor    = 1 << 13,
+  tflag_dtor    = 1 << 14,
+  tflag_tmpl    = 1 << 15,
+  tflag_typedef = 1 << 16,
 } __attribute__((packed));
 
 struct Type_ {
index 889eb1b2d7c77e8cafb2ff04ada8480626deb49d..7bd3437171a2d5e9c7b1e0dc811951d3a071384e 100644 (file)
@@ -79,7 +79,7 @@ ANN2(1,2) Type gwi_class_ini(const Gwi gwi, const m_str name, const m_str parent
   if(td->array)
     set_tflag(t, tflag_typedef);
   if(ck.tmpl)
-    set_tflag(t, tflag_tmpl);
+    set_tflag(t, tflag_tmpl | tflag_ntmpl);
   else
     gwi_type_flag(t);
   return type_finish(gwi, t);
index 6a68ad60d4245d0bdf7424a8209841f14042e427..5d88e83e61a7fff947723553708b24410bb2169a 100644 (file)
@@ -238,7 +238,6 @@ ANN static m_bool scantmpl_class_def(const Env env, struct tmpl_info *info) {
   if((info->ret = cdef->base.type)) {
     info->ret->info->cdef = cdef;
     set_tflag(info->ret, tflag_cdef);
-    set_tflag(info->ret, tflag_ctmpl);
   } else
     free_class_def(env->gwion->mp, cdef);
   return ret;
index 88af4878c3cce50e7373637c55b88526ed7272f8..28f0f5d04b7dd33829bd02e12d3f634ecac690c9 100644 (file)
@@ -97,7 +97,7 @@ static ANN Type maybe_func(const Env env, const Type t, const Type_Decl* td) {
 
 ANN Type _scan_type(const Env env, const Type t, Type_Decl* td) {
   if(tflag(t, tflag_tmpl) && isa(t, env->gwion->type[et_function]) < 0) {
-    if(tflag(t, tflag_ctmpl) || (tflag(t, tflag_ntmpl) && !td->types))
+    if(tflag(t, tflag_ntmpl) && !td->types)
       return t;
     struct TemplateScan ts = { .t=t, .td=td };
     struct Op_Import opi = { .op=insert_symbol("@scan"), .lhs=t, .data=(uintptr_t)&ts, .pos=td->pos, .op_type=op_scan };
index efdc68c1e95d3cc9117c73d13da1950678563b55..8db17222ed5d1d37dd3581f972a4307c2d818a42 100644 (file)
@@ -4,5 +4,5 @@ class Parent:[A] {
     13 => var B B;
   }
 }
-var Parent.C:[int, int] c;
+var Parent:[int].C:[int] c;
 <<< c.a >>>;