]> Nishi Git Mirror - gwion.git/commitdiff
:art: check trait defined
authorfennecdjay <fennecdjay@gmail.com>
Mon, 24 Oct 2022 15:18:55 +0000 (17:18 +0200)
committerfennecdjay <fennecdjay@gmail.com>
Mon, 24 Oct 2022 15:18:55 +0000 (17:18 +0200)
src/parse/scan0.c

index be407834dff22bf63cdc9653977e645bb5ec7a64..2ffa7034d920d88321d51f8086a28eb39bc5d00a 100644 (file)
@@ -450,9 +450,11 @@ ANN static m_bool _scan0_trait_def(const Env env, const Trait_Def pdef) {
   trait->loc        = pdef->pos;
   trait->name       = s_name(pdef->xid);
   trait->filename   = env->name;
-  if(GET_FLAG(pdef, global))
-    nspc_add_trait(env->global_nspc, pdef->xid, trait);
-  else nspc_add_trait(env->curr, pdef->xid, trait);
+  const bool global = GET_FLAG(pdef, global);
+  if(global) env_push_global(env);
+  CHECK_BB(scan0_defined(env, pdef->xid, pdef->pos));
+  nspc_add_trait(env->curr, pdef->xid, trait);
+  if(global) env_pop(env, 0);
   Ast ast = pdef->body;
   if(!ast) return GW_OK; // ???
   for(m_uint i = 0; i < ast->len; i++) {