]> Nishi Git Mirror - gwion.git/commitdiff
:art: Improve @gack
authorJérémie Astor <fennecdjay@gmail.com>
Mon, 1 Mar 2021 19:01:28 +0000 (20:01 +0100)
committerJérémie Astor <fennecdjay@gmail.com>
Mon, 1 Mar 2021 19:01:28 +0000 (20:01 +0100)
src/lib/object.c
src/parse/check.c

index d69f6695a0ec5816cf9476648a87109ef1de3b8a..afd7dffc19f30b543aea4619c57545b44b792d65 100644 (file)
@@ -100,7 +100,7 @@ static ID_CHECK(opck_this) {
     ERR_O(exp_self(prim)->pos, _("keyword 'this' can be used only inside class definition..."))
   if(env->func && !vflag(env->func->value_ref, vflag_member))
       ERR_O(exp_self(prim)->pos, _("keyword 'this' cannot be used inside static functions..."))
-  if(env->func && !strcmp(s_name(env->func->def->base->xid), "@gack"))
+  if(!exp_getuse(exp_self(prim)) && env->func && !strcmp(s_name(env->func->def->base->xid), "@gack"))
     return get_gack(env->class_def->info->parent); // get_gack ?
   return env->class_def;
 }
index afc4f3012dca3dc6bc9d6d3ccc2a4d18b304bf4d..f652149bb0aa125493ae7719fcab9355a2619b19 100644 (file)
@@ -289,6 +289,7 @@ ANN static Type prim_owned(const Env env, const Symbol *data) {
   const Value v = exp->d.prim.value;
   const m_str name = !GET_FLAG(v, static) ? "this" : v->from->owner_class->name;
   const Exp base = new_prim_id(env->gwion->mp, insert_symbol(name), prim_pos(data));
+  exp_setuse(base, 1);
   exp->exp_type = ae_exp_dot;
   exp->d.exp_dot.base = base;
   exp->d.exp_dot.xid = *data;