]> Nishi Git Mirror - gwion.git/commitdiff
:bug: bug fixes
authorJérémie Astor <fennecdjay@gmail.com>
Sun, 25 Jul 2021 18:30:19 +0000 (20:30 +0200)
committerJérémie Astor <fennecdjay@gmail.com>
Sun, 25 Jul 2021 18:30:19 +0000 (20:30 +0200)
src/emit/emit.c
src/parse/check.c
src/parse/scan1.c
src/vm/vm.c

index 6439c4a7cd62bee2cd313c5a1893e98f2d4c6d70..5a215ba92c70d19a772234955fda430ffa185e76 100644 (file)
@@ -2120,8 +2120,6 @@ ANN static m_bool _emit_stmt_each(const Emitter emit, const Stmt_Each stmt,
   emit_local(emit, emit->gwion->type[et_int]);
   const Instr tomem     = emit_add_instr(emit, Reg2Mem);
   tomem->m_val          = offset;
-  const Instr s1        = emit_add_instr(emit, MemSetImm);
-  s1->m_val             = offset + SZ_INT;
   const Instr loop_idx  = emit_add_instr(emit, MemSetImm);
   loop_idx->m_val       = offset + SZ_INT;
   loop_idx->m_val2      = -1;
index a27b538c996b8ca4106b585f5946e36303bf5884..1ee979c552814ad267c4e8019b8f2bffefb6f11b 100644 (file)
@@ -1517,7 +1517,7 @@ ANN static m_bool check_func_overload(const Env env, const Func_Def fdef) {
               fbflag(f2->def->base, fbflag_unary) &&
           fbflag(f1->def->base, fbflag_postfix) ==
               fbflag(f2->def->base, fbflag_postfix))
-        ERR_B(f2->def->base->td->pos,
+        ERR_B(f2->def->base->pos,
               _("global function '%s' already defined"
                 " for those arguments"),
               s_name(fdef->base->xid))
index 6d6a6f8bb9453a882e13d53718cb29c4bc511fa7..c7f4155487bcec08b1adbdd7b109fa784836e308 100644 (file)
@@ -116,7 +116,7 @@ ANN static m_bool scan1_decl(const Env env, const Exp_Decl *decl) {
         set_vflag(v, vflag_fglobal); // file global
     } else if (GET_FLAG(decl->td, global))
       SET_FLAG(v, global);
-    else if(v->type != env->gwion->type[et_auto] && v->type != env->class_def) {
+    else if(v->type != env->gwion->type[et_auto] && (v->type != env->class_def || env->scope->depth)) {
       type_addref(v->type);
       set_vflag(v, vflag_inner); // file global
     }
index 05b218edfc6cdfcd5b47fc0faa865e30e285a2cd..01b24041134ab609059def7a65596d79bd471b7d 100644 (file)
@@ -994,10 +994,10 @@ vm_run(const VM *vm) { // lgtm [cpp/use-of-goto]
     autoloop:
       *(m_bit **)(mem + VAL2 + SZ_INT) =
           m_vector_addr(ARRAY(*(M_Object *)(mem + VAL2 - SZ_INT)),
-                        *(m_uint *)(mem + VAL2) + 1);
+                        ++*(m_uint *)(mem + VAL2));
       BRANCH_DISPATCH(
           m_vector_size(ARRAY(*(M_Object *)(mem + VAL2 - SZ_INT))) ==
-          ++*(m_uint *)(mem + VAL2));
+          *(m_uint *)(mem + VAL2));
     arraytop:
       if (*(m_uint *)(reg - SZ_INT * 2) < *(m_uint *)(reg - SZ_INT))
         goto newobj;