commit d4247befa18a7911c56e7110154ad73574cd6648
parent ee6a4cd1eca4fa736d108e1e0ac3cb9858f7a5ef
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date: Fri, 15 Nov 2024 11:56:51 -0300
New macro 'assert_code'
It allows code that is only used by assertions but that are not
assertions (e.g., declaration of a variable used in a later assertion).
Diffstat:
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/llimits.h b/llimits.h
@@ -102,18 +102,19 @@ typedef LUAI_UACINT l_uacInt;
#undef NDEBUG
#include <assert.h>
#define lua_assert(c) assert(c)
+#define assert_code(c) c
#endif
#if defined(lua_assert)
-#define check_exp(c,e) (lua_assert(c), (e))
-/* to avoid problems with conditions too long */
-#define lua_longassert(c) ((c) ? (void)0 : lua_assert(0))
#else
#define lua_assert(c) ((void)0)
-#define check_exp(c,e) (e)
-#define lua_longassert(c) ((void)0)
+#define assert_code(c) ((void)0)
#endif
+#define check_exp(c,e) (lua_assert(c), (e))
+/* to avoid problems with conditions too long */
+#define lua_longassert(c) assert_code((c) ? (void)0 : lua_assert(0))
+
/* macro to avoid warnings about unused variables */
#if !defined(UNUSED)