mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-21 22:24:07 +01:00
Add lua::humanErrorText
This commit is contained in:
parent
d830d1c960
commit
5191f4c9eb
3 changed files with 44 additions and 27 deletions
|
@ -10,6 +10,42 @@
|
|||
|
||||
namespace chatterino::lua {
|
||||
|
||||
QString humanErrorText(lua_State *L, int errCode)
|
||||
{
|
||||
QString errName;
|
||||
switch (errCode)
|
||||
{
|
||||
case LUA_OK:
|
||||
return "ok";
|
||||
case LUA_ERRRUN:
|
||||
errName = "(runtime error)";
|
||||
break;
|
||||
case LUA_ERRMEM:
|
||||
errName = "(memory error)";
|
||||
break;
|
||||
case LUA_ERRERR:
|
||||
errName = "(error while handling another error)";
|
||||
break;
|
||||
case LUA_ERRSYNTAX:
|
||||
errName = "(syntax error)";
|
||||
break;
|
||||
case LUA_YIELD:
|
||||
errName = "(illegal coroutine yield)";
|
||||
break;
|
||||
case LUA_ERRFILE:
|
||||
errName = "(file error)";
|
||||
break;
|
||||
default:
|
||||
errName = "(unknown error type)";
|
||||
}
|
||||
QString errText;
|
||||
if (peek(L, &errText))
|
||||
{
|
||||
errName += " " + errText;
|
||||
}
|
||||
return errName;
|
||||
}
|
||||
|
||||
StackIdx pushEmptyArray(lua_State *L, int countArray)
|
||||
{
|
||||
lua_createtable(L, countArray, 0);
|
||||
|
|
|
@ -6,12 +6,18 @@
|
|||
|
||||
#include <vector>
|
||||
struct lua_State;
|
||||
class QJsonObject;
|
||||
namespace chatterino {
|
||||
struct CommandContext;
|
||||
} // namespace chatterino
|
||||
|
||||
namespace chatterino::lua {
|
||||
|
||||
/**
|
||||
* @brief Converts a lua error code and potentially string on top of the stack into a human readable message
|
||||
*/
|
||||
QString humanErrorText(lua_State *L, int errCode);
|
||||
|
||||
using StackIdx = int;
|
||||
|
||||
StackIdx pushEmptyArray(lua_State *L, int countArray);
|
||||
|
|
|
@ -145,33 +145,8 @@ QString PluginController::tryExecPluginCommand(const QString &commandName,
|
|||
auto res = lua_pcall(L, 1, 0, 0);
|
||||
if (res != LUA_OK)
|
||||
{
|
||||
QString errName;
|
||||
switch (res)
|
||||
{
|
||||
case LUA_ERRRUN:
|
||||
errName = "runtime error";
|
||||
break;
|
||||
case LUA_ERRMEM:
|
||||
errName = "memory error";
|
||||
break;
|
||||
case LUA_ERRERR:
|
||||
errName = "error???";
|
||||
break;
|
||||
default:
|
||||
errName = "unknown";
|
||||
}
|
||||
const char *errText = luaL_optstring(L, -1, NULL);
|
||||
if (errText != nullptr)
|
||||
{
|
||||
ctx.channel->addMessage(
|
||||
makeSystemMessage(QString("Lua error: (%1) %2")
|
||||
.arg(errName, QString(errText))));
|
||||
}
|
||||
else
|
||||
{
|
||||
ctx.channel->addMessage(
|
||||
makeSystemMessage("Lua error: " + errName));
|
||||
}
|
||||
ctx.channel->addMessage(makeSystemMessage(
|
||||
"Lua error: " + lua::humanErrorText(L, res)));
|
||||
return "";
|
||||
}
|
||||
return "";
|
||||
|
|
Loading…
Reference in a new issue