Tag values don't need to be different from type values
Variants can use zero for first variant.
diff --git a/lobject.h b/lobject.h
index 3254229..428145a 100644
--- a/lobject.h
+++ b/lobject.h
@@ -155,13 +155,13 @@
*/
/* Standard nil */
-#define LUA_VNIL makevariant(LUA_TNIL, 1)
+#define LUA_VNIL makevariant(LUA_TNIL, 0)
/* Empty slot (which might be different from a slot containing nil) */
-#define LUA_VEMPTY makevariant(LUA_TNIL, 2)
+#define LUA_VEMPTY makevariant(LUA_TNIL, 1)
/* Value returned for a key not found in a table (absent key) */
-#define LUA_VABSTKEY makevariant(LUA_TNIL, 3)
+#define LUA_VABSTKEY makevariant(LUA_TNIL, 2)
/* macro to test for (any kind of) nil */
@@ -211,8 +211,8 @@
*/
-#define LUA_VFALSE makevariant(LUA_TBOOLEAN, 1)
-#define LUA_VTRUE makevariant(LUA_TBOOLEAN, 2)
+#define LUA_VFALSE makevariant(LUA_TBOOLEAN, 0)
+#define LUA_VTRUE makevariant(LUA_TBOOLEAN, 1)
#define ttisboolean(o) checktype((o), LUA_TBOOLEAN)
#define ttisfalse(o) checktag((o), LUA_VFALSE)
@@ -234,7 +234,7 @@
** ===================================================================
*/
-#define LUA_VTHREAD makevariant(LUA_TTHREAD, 1)
+#define LUA_VTHREAD makevariant(LUA_TTHREAD, 0)
#define ttisthread(o) checktag((o), ctb(LUA_VTHREAD))
@@ -295,8 +295,8 @@
*/
/* Variant tags for numbers */
-#define LUA_VNUMINT makevariant(LUA_TNUMBER, 1) /* integer numbers */
-#define LUA_VNUMFLT makevariant(LUA_TNUMBER, 2) /* float numbers */
+#define LUA_VNUMINT makevariant(LUA_TNUMBER, 0) /* integer numbers */
+#define LUA_VNUMFLT makevariant(LUA_TNUMBER, 1) /* float numbers */
#define ttisnumber(o) checktype((o), LUA_TNUMBER)
#define ttisfloat(o) checktag((o), LUA_VNUMFLT)
@@ -332,8 +332,8 @@
*/
/* Variant tags for strings */
-#define LUA_VSHRSTR makevariant(LUA_TSTRING, 1) /* short strings */
-#define LUA_VLNGSTR makevariant(LUA_TSTRING, 2) /* long strings */
+#define LUA_VSHRSTR makevariant(LUA_TSTRING, 0) /* short strings */
+#define LUA_VLNGSTR makevariant(LUA_TSTRING, 1) /* long strings */
#define ttisstring(o) checktype((o), LUA_TSTRING)
#define ttisshrstring(o) checktag((o), ctb(LUA_VSHRSTR))
@@ -403,8 +403,9 @@
** Light userdata should be a variant of userdata, but for compatibility
** reasons they are also different types.
*/
-#define LUA_VLIGHTUSERDATA makevariant(LUA_TLIGHTUSERDATA, 1)
-#define LUA_VUSERDATA makevariant(LUA_TUSERDATA, 1)
+#define LUA_VLIGHTUSERDATA makevariant(LUA_TLIGHTUSERDATA, 0)
+
+#define LUA_VUSERDATA makevariant(LUA_TUSERDATA, 0)
#define ttislightuserdata(o) checktag((o), LUA_VLIGHTUSERDATA)
#define ttisfulluserdata(o) checktag((o), ctb(LUA_VUSERDATA))
@@ -482,7 +483,7 @@
** ===================================================================
*/
-#define LUA_VPROTO makevariant(LUA_TPROTO, 1)
+#define LUA_VPROTO makevariant(LUA_TPROTO, 0)
/*
@@ -559,13 +560,13 @@
** ===================================================================
*/
-#define LUA_VUPVAL makevariant(LUA_TUPVAL, 1)
+#define LUA_VUPVAL makevariant(LUA_TUPVAL, 0)
/* Variant tags for functions */
-#define LUA_VLCL makevariant(LUA_TFUNCTION, 1) /* Lua closure */
-#define LUA_VLCF makevariant(LUA_TFUNCTION, 2) /* light C function */
-#define LUA_VCCL makevariant(LUA_TFUNCTION, 3) /* C closure */
+#define LUA_VLCL makevariant(LUA_TFUNCTION, 0) /* Lua closure */
+#define LUA_VLCF makevariant(LUA_TFUNCTION, 1) /* light C function */
+#define LUA_VCCL makevariant(LUA_TFUNCTION, 2) /* C closure */
#define ttisfunction(o) checktype(o, LUA_TFUNCTION)
#define ttisclosure(o) ((rawtt(o) & 0x1F) == LUA_VLCL)
@@ -650,7 +651,7 @@
** ===================================================================
*/
-#define LUA_VTABLE makevariant(LUA_TTABLE, 1)
+#define LUA_VTABLE makevariant(LUA_TTABLE, 0)
#define ttistable(o) checktag((o), ctb(LUA_VTABLE))