]> Nishi Git Mirror - gwion.git/commitdiff
:art: Decl scoping (fix)
authorJérémie Astor <astor.jeremie@wanadoo.fr>
Fri, 3 Jul 2020 11:41:06 +0000 (13:41 +0200)
committerJérémie Astor <astor.jeremie@wanadoo.fr>
Fri, 3 Jul 2020 11:41:06 +0000 (13:41 +0200)
src/parse/scan1.c

index 4247e7d0265f4b763254a15decbacb967bdb80a0..3e9d0d53eff90d09263c8b77a2395ba3f112c69e 100644 (file)
@@ -60,15 +60,20 @@ ANN static Type scan1_exp_decl_type(const Env env, Exp_Decl* decl) {
   return decl->type = t;
 }
 
+static inline m_bool scan1_defined(const Env env, const Var_Decl var) {
+  if(((!env->class_def || env->scope->depth) ? nspc_lookup_value1 : nspc_lookup_value2)(env->curr, var->xid))
+    ERR_B(var->pos, _("variable %s has already been defined in the same scope..."),
+              s_name(var->xid))
+  return GW_OK;
+}
+
 ANN static m_bool scan1_decl(const Env env, const Exp_Decl* decl) {
   Var_Decl_List list = decl->list;
   do {
     const Var_Decl var = list->self;
     CHECK_BB(isres(env, var->xid, exp_self(decl)->pos))
     Type t = decl->type;
-    if((!env->class_def || env->scope->depth) ? (nspc_lookup_value1 : nspc_lookup_value2)(env->curr, var->xid))
-      ERR_B(var->pos, _("variable %s has already been defined in the same scope..."),
-              s_name(var->xid))
+    CHECK_BB(scan1_defined(env, var))
     if(var->array) {
       if(var->array->exp) {
         if(GET_FLAG(decl->td, ref))