Просмотр исходного кода

Details

Small changes in test library:
- execute mode added to 'all.lua';
- more information about subtypes (tags) when printing a stack.
Roberto Ierusalimschy 4 месяцев назад
Родитель
Сommit
cad5a4fdbb
2 измененных файлов с 28 добавлено и 25 удалено
  1. 28 25
      ltests.c
  2. 0 0
      testes/all.lua

+ 28 - 25
ltests.c

@@ -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 - 0
testes/all.lua