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) {
switch (ttype(v)) {
case LUA_TNUMBER: {
switch (ttypetag(v)) {
case LUA_VNUMINT: case LUA_VNUMFLT: {
char buff[LUA_N2SBUFFSZ];
unsigned len = luaO_tostringbuff(v, buff);
buff[len] = '\0';
printf("%s", buff);
break;
}
case LUA_TSTRING: {
printf("'%s'", getstr(tsvalue(v)));
break;
}
case LUA_TBOOLEAN: {
printf("%s", (!l_isfalse(v) ? "true" : "false"));
break;
}
case LUA_TLIGHTUSERDATA: {
printf("light udata: %p", pvalue(v));
break;
}
case LUA_TNIL: {
printf("nil");
break;
}
default: {
if (ttislcf(v))
printf("light C function: %p", fvalue(v));
else /* must be collectable */
printf("%s: %p", ttypename(ttype(v)), gcvalue(v));
break;
}
case LUA_VSHRSTR:
printf("'%s'", getstr(tsvalue(v))); break;
case LUA_VLNGSTR:
printf("'%.30s...'", getstr(tsvalue(v))); break;
case LUA_VFALSE:
printf("%s", "false"); break;
case LUA_VTRUE:
printf("%s", "true"); break;
case LUA_VLIGHTUSERDATA:
printf("light udata: %p", pvalue(v)); break;
case LUA_VUSERDATA:
printf("full udata: %p", uvalue(v)); break;
case LUA_VNIL:
printf("nil"); break;
case LUA_VLCF:
printf("light C function: %p", fvalue(v)); break;
case LUA_VCCL:
printf("C closure: %p", clCvalue(v)); break;
case LUA_VLCL:
printf("Lua function: %p", clLvalue(v)); break;
case LUA_VTHREAD:
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