]> Nishi Git Mirror - gwion.git/commitdiff
:art: Allow abstract ctor
authorJérémie Astor <fennecdjay@gmail.com>
Mon, 7 Dec 2020 21:01:16 +0000 (22:01 +0100)
committerJérémie Astor <fennecdjay@gmail.com>
Mon, 7 Dec 2020 21:01:27 +0000 (22:01 +0100)
src/parse/scan1.c

index dfc8b35513147a5bca66abf6dc97a8b46b48ef12..b1a213ea3aff2053a9a810f3476e7835c35e407d 100644 (file)
@@ -82,10 +82,12 @@ ANN static m_bool scan1_decl(const Env env, const Exp_Decl* decl) {
         CHECK_BB(scan1_exp(env, var->array->exp))
       t = array_type(env, decl->type, var->array->depth);
     } else if(GET_FLAG(t, abstract) && !GET_FLAG(decl->td, ref)) {
-      if(decl->td->xid == insert_symbol("auto"))
-        SET_FLAG(decl->td, ref);
-      else
-        ERR_B(exp_self(decl)->pos, _("Type '%s' is abstract, declare as ref. (use @)"), t->name)
+      if(!(t == env->class_def && env->scope->depth)) {
+        if(decl->td->xid == insert_symbol("auto"))
+          SET_FLAG(decl->td, ref);
+        else
+          ERR_B(exp_self(decl)->pos, _("Type '%s' is abstract, declare as ref. (use @)"), t->name)
+      }
     }
     const Value v = var->value = var->value ?: new_value(env->gwion->mp, t, s_name(var->xid));
 // rewrite logic