]> Nishi Git Mirror - gwion.git/commitdiff
:art: update 'super' functions
authorfennecdjay <fennecdjay@gmail.com>
Thu, 8 Dec 2022 13:32:54 +0000 (14:32 +0100)
committerfennecdjay <fennecdjay@gmail.com>
Thu, 8 Dec 2022 13:32:54 +0000 (14:32 +0100)
src/lib/object.c

index 1193ed0662592822ec6adfc6daae98618da90583..0570dd83e1e97666d10874d91e654eaa1473ab23 100644 (file)
@@ -123,9 +123,6 @@ static ID_CHECK(opck_super) {
   const Exp self = exp_self(prim);
   if(!env->func)
     ERR_O(self->pos, "can't use 'super' outside of constructor");
-// move in emit?
-//  if(!self->is_call)
-//    ERR_O(self->pos, "'super' can only be used as a call");
   const Type parent = env->class_def->info->parent;
   DECL_OO(const Value, v, = find_value(parent, insert_symbol("new")));
   SET_FLAG(env->func, const);
@@ -133,6 +130,10 @@ static ID_CHECK(opck_super) {
 }
 
 static ID_EMIT(opem_super) {
+  const Env env = emit->env;
+  const Exp self = exp_self(prim);
+  if(!self->is_call)
+    ERR_B(self->pos, "can only use 'super' as a function call");
   emit_regpushmem(emit, 0, SZ_INT, false);
   emit_pushimm(emit, (m_uint)exp_self(prim)->type);
   return GW_OK;