Small changes in test library:
- execute mode added to 'all.lua';
- more information about subtypes (tags) when printing a stack.
This commit is contained in:
Roberto Ierusalimschy
2025-03-24 15:23:55 -03:00
parent fdbb4c2341
commit cad5a4fdbb
2 changed files with 28 additions and 25 deletions

View File

@@ -327,37 +327,40 @@ void lua_printobj (lua_State *L, struct GCObject *o) {
void lua_printvalue (TValue *v) { void lua_printvalue (TValue *v) {
switch (ttype(v)) { switch (ttypetag(v)) {
case LUA_TNUMBER: { case LUA_VNUMINT: case LUA_VNUMFLT: {
char buff[LUA_N2SBUFFSZ]; char buff[LUA_N2SBUFFSZ];
unsigned len = luaO_tostringbuff(v, buff); unsigned len = luaO_tostringbuff(v, buff);
buff[len] = '\0'; buff[len] = '\0';
printf("%s", buff); printf("%s", buff);
break; break;
} }
case LUA_TSTRING: { case LUA_VSHRSTR:
printf("'%s'", getstr(tsvalue(v))); printf("'%s'", getstr(tsvalue(v))); break;
break; case LUA_VLNGSTR:
} printf("'%.30s...'", getstr(tsvalue(v))); break;
case LUA_TBOOLEAN: { case LUA_VFALSE:
printf("%s", (!l_isfalse(v) ? "true" : "false")); printf("%s", "false"); break;
break; case LUA_VTRUE:
} printf("%s", "true"); break;
case LUA_TLIGHTUSERDATA: { case LUA_VLIGHTUSERDATA:
printf("light udata: %p", pvalue(v)); printf("light udata: %p", pvalue(v)); break;
break; case LUA_VUSERDATA:
} printf("full udata: %p", uvalue(v)); break;
case LUA_TNIL: { case LUA_VNIL:
printf("nil"); printf("nil"); break;
break; case LUA_VLCF:
} printf("light C function: %p", fvalue(v)); break;
default: { case LUA_VCCL:
if (ttislcf(v)) printf("C closure: %p", clCvalue(v)); break;
printf("light C function: %p", fvalue(v)); case LUA_VLCL:
else /* must be collectable */ printf("Lua function: %p", clLvalue(v)); break;
printf("%s: %p", ttypename(ttype(v)), gcvalue(v)); case LUA_VTHREAD:
break; printf("thread: %p", thvalue(v)); break;
} case LUA_VTABLE:
printf("table: %p", hvalue(v)); break;
default:
lua_assert(0);
} }
} }

0
testes/all.lua Normal file → Executable file
View File