-
Notifications
You must be signed in to change notification settings - Fork 0
/
error.c
51 lines (46 loc) · 1.05 KB
/
error.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "lauxlib.h"
#include "error.h"
const char *yaml_error_names[] = {
"NO_ERROR",
"MEMORY_ERROR",
"READER_ERROR",
"SCANNER_ERROR",
"PARSER_ERROR",
"COMPOSER_ERROR",
"WRITER_ERROR",
"EMITTER_ERROR",
"EXECUTION_ERROR",
"SYNTAX_ERROR",
"RUNTIME_ERROR",
"ERROR_HANDLER_ERROR",
"TYPE_ERROR",
"RENDER_ERROR",
"ASSERTION_ERROR",
};
const char *yl_error_name(yl_error_type_t error_type)
{
return yaml_error_names[error_type];
}
yl_error_type_t yl_error_from_lua_error(int status)
{
switch (status) {
case LUA_OK:
return YL_NO_ERROR;
case LUA_ERRRUN:
return YL_RUNTIME_ERROR;
case LUA_ERRSYNTAX:
return YL_SYNTAX_ERROR;
case LUA_ERRMEM:
return YL_MEMORY_ERROR;
case LUA_ERRERR:
return YL_ERROR_HANDLER_ERROR;
default:
return YL_EXECUTION_ERROR;
}
}
int yl_lua_error_handler(lua_State *L)
{
const char *msg = lua_tostring(L, 1);
luaL_traceback(L, L, msg, 1);
return 1; // Just return the traceback, discard the message.
}