lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


---------- Forwarded message ----------
From: CHU Run-min <churunmin@gmail.com>
Date: 2006-6-4 下午8:12
Subject: Re: About ifstat
To: Lua list <lua@bazar2.conectiva.com.br>


Thank you very much! I understand the meaning of luaK_patchtohere.
When I dig into Lua source, I found another problem which confusing me.


static void leaveblock (FuncState *fs) {
BlockCnt *bl = fs->bl;
fs->bl = bl->previous;
removevars(fs->ls, bl->nactvar);
if (bl->upval)
  luaK_codeABC(fs, OP_CLOSE, bl->nactvar, 0, 0);
lua_assert(!bl->isbreakable || !bl->upval);  /* loops have no body */
lua_assert(bl->nactvar == fs->nactvar);
fs->freereg = fs->nactvar;  /* free registers */
luaK_patchtohere(fs, bl->breaklist);
}


lua_assert(!bl->isbreakable || !bl->upval);  /* loops have no body */
According to the assert, it seems for statement and while statement
cannot have upvalue.Would you give me more information about this?