]> Nishi Git Mirror - gwion.git/commitdiff
:bug: Global types must extends global types
authorJérémie Astor <fennecdjay@gmail.com>
Mon, 25 Apr 2022 19:43:38 +0000 (21:43 +0200)
committerJérémie Astor <fennecdjay@gmail.com>
Mon, 25 Apr 2022 19:43:38 +0000 (21:43 +0200)
src/parse/scan0.c

index 7260935637add5552d9690a77f9dd71c13611a98..32c186ec58fbf32fad8aea07ba5b79516fd06d24 100644 (file)
@@ -351,6 +351,13 @@ ANN static Type scan0_class_def_init(const Env env, const Class_Def cdef) {
   CHECK_BO(scan0_defined(env, cdef->base.xid, cdef->pos));
   const Type parent = cdef_parent(env, cdef);
   if (parent == (Type)GW_ERROR) return NULL;
+  if(GET_FLAG(cdef, global) && !type_global(env, parent)) {
+    gwerr_basic(_("parent type is not global"), NULL, NULL, env->name, cdef->base.ext ? cdef->base.ext->pos : cdef->base.pos, 0);
+    const Value v = parent->info->value;
+    gwerr_warn("declared here", NULL, NULL, v->from->filename, v->from->loc);
+    env->context->error = true;
+    return NULL;
+  }
   //if(parent) type_addref(parent);
   if (cdef->traits) CHECK_BO(find_traits(env, cdef->traits, cdef->pos));
   const Type t = scan0_type(env, s_name(cdef->base.xid), parent);