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 {
|
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)
|
StackIdx pushEmptyArray(lua_State *L, int countArray)
|
||||||
{
|
{
|
||||||
lua_createtable(L, countArray, 0);
|
lua_createtable(L, countArray, 0);
|
||||||
|
|
|
@ -6,12 +6,18 @@
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
struct lua_State;
|
struct lua_State;
|
||||||
|
class QJsonObject;
|
||||||
namespace chatterino {
|
namespace chatterino {
|
||||||
struct CommandContext;
|
struct CommandContext;
|
||||||
} // namespace chatterino
|
} // namespace chatterino
|
||||||
|
|
||||||
namespace chatterino::lua {
|
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;
|
using StackIdx = int;
|
||||||
|
|
||||||
StackIdx pushEmptyArray(lua_State *L, int countArray);
|
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);
|
auto res = lua_pcall(L, 1, 0, 0);
|
||||||
if (res != LUA_OK)
|
if (res != LUA_OK)
|
||||||
{
|
{
|
||||||
QString errName;
|
ctx.channel->addMessage(makeSystemMessage(
|
||||||
switch (res)
|
"Lua error: " + lua::humanErrorText(L, 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));
|
|
||||||
}
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
|
|
Loading…
Reference in a new issue