The function luaL_checkudata(L, index, name) exits with an error when the name does not correspond to the one in the metatable consulted.
However, I have a situation where this situation is not necessarily fatal for the program. Several types of userdata are possible and are processed in an if-elseif-else chain.
It is of course no great problem to copy the code from lauxlib.c, omit the call to lua_typerror and use the cannibalized code. But I would be happy to avoid such duplication.
Therefore this question: can it be considered for the next version/update of Lua to split luaL_checkudata? For example providing the boolean returning function:
int lua_isudata(lua_State *L, int narg, const char *tname)
After which luaL_checkudata simply can become:
#define luaL_checkudata(L,A,N)\
(!lua_isudata((L),(A),(N))||luaL_typerror((L),(A),(N)))
Imho this will bring more flexibility at negligable cost.