mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2026-08-13 00:45:11 +09:00
Assert the debug frames exist
`debug.getinfo` is optional, but these helpers always ask for a frame which is on the stack. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -92,7 +92,7 @@ local assert_argument_fmt = "Bad argument #%d to %s; %s expected to be of type %
|
|||||||
function ExpUtil.assert_argument_type(arg_value, type_name, arg_index, arg_name)
|
function ExpUtil.assert_argument_type(arg_value, type_name, arg_index, arg_name)
|
||||||
local failed, actual_type = check_type(arg_value, type_name)
|
local failed, actual_type = check_type(arg_value, type_name)
|
||||||
if failed then
|
if failed then
|
||||||
local func_name = getinfo(2, "n").name or "<anonymous>"
|
local func_name = assert(getinfo(2, "n")).name or "<anonymous>"
|
||||||
error(assert_argument_fmt:format(arg_index, func_name, arg_name or "Argument", type_name, actual_type), 2)
|
error(assert_argument_fmt:format(arg_index, func_name, arg_name or "Argument", type_name, actual_type), 2)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -136,7 +136,7 @@ end
|
|||||||
--- @param level number? The level of the stack to get the file of, a value of 1 is the caller of this function
|
--- @param level number? The level of the stack to get the file of, a value of 1 is the caller of this function
|
||||||
--- @return string # The relative filepath of the given stack frame
|
--- @return string # The relative filepath of the given stack frame
|
||||||
function ExpUtil.safe_file_path(level)
|
function ExpUtil.safe_file_path(level)
|
||||||
local debug_info = getinfo((level or 1) + 1, "Sn")
|
local debug_info = assert(getinfo((level or 1) + 1, "Sn"))
|
||||||
local safe_source = debug_info.source:find("@__level__")
|
local safe_source = debug_info.source:find("@__level__")
|
||||||
return safe_source == 1 and debug_info.short_src:sub(10, -5) or debug_info.source
|
return safe_source == 1 and debug_info.short_src:sub(10, -5) or debug_info.source
|
||||||
end
|
end
|
||||||
@@ -145,7 +145,7 @@ end
|
|||||||
--- @param level number? The level of the stack to get the module of, a value of 1 is the caller of this function
|
--- @param level number? The level of the stack to get the module of, a value of 1 is the caller of this function
|
||||||
--- @return string # The name of the module at the given stack frame
|
--- @return string # The name of the module at the given stack frame
|
||||||
function ExpUtil.get_module_name(level)
|
function ExpUtil.get_module_name(level)
|
||||||
local file_within_module = getinfo((level or 1) + 1, "S").short_src:sub(19, -5)
|
local file_within_module = assert(getinfo((level or 1) + 1, "S")).short_src:sub(19, -5)
|
||||||
local next_slash = file_within_module:find("/")
|
local next_slash = file_within_module:find("/")
|
||||||
if next_slash then
|
if next_slash then
|
||||||
return file_within_module:sub(1, next_slash - 1)
|
return file_within_module:sub(1, next_slash - 1)
|
||||||
@@ -159,7 +159,7 @@ end
|
|||||||
--- @param raw boolean? When true there will not be any < > around the name
|
--- @param raw boolean? When true there will not be any < > around the name
|
||||||
--- @return string # The name of the function at the given stack frame or provided as an argument
|
--- @return string # The name of the function at the given stack frame or provided as an argument
|
||||||
function ExpUtil.get_function_name(func, raw)
|
function ExpUtil.get_function_name(func, raw)
|
||||||
local debug_info = getinfo(func, "Sn")
|
local debug_info = assert(getinfo(func, "Sn"))
|
||||||
local safe_source = debug_info.source:find("@__level__")
|
local safe_source = debug_info.source:find("@__level__")
|
||||||
local file_name = safe_source == 1 and debug_info.source:sub(12, -5) or debug_info.source
|
local file_name = safe_source == 1 and debug_info.source:sub(12, -5) or debug_info.source
|
||||||
local func_name = debug_info.name or debug_info.linedefined
|
local func_name = debug_info.name or debug_info.linedefined
|
||||||
@@ -172,7 +172,7 @@ end
|
|||||||
--- @param raw boolean? When true there will not be any < > around the name
|
--- @param raw boolean? When true there will not be any < > around the name
|
||||||
--- @return string # The relative filepath of the given stack frame
|
--- @return string # The relative filepath of the given stack frame
|
||||||
function ExpUtil.get_current_line(level, raw)
|
function ExpUtil.get_current_line(level, raw)
|
||||||
local debug_info = getinfo((level or 1) + 1, "Snl")
|
local debug_info = assert(getinfo((level or 1) + 1, "Snl"))
|
||||||
local safe_source = debug_info.source:find("@__level__")
|
local safe_source = debug_info.source:find("@__level__")
|
||||||
local file_path = safe_source == 1 and debug_info.short_src:sub(10, -5) or debug_info.source
|
local file_path = safe_source == 1 and debug_info.short_src:sub(10, -5) or debug_info.source
|
||||||
if raw then return file_path .. ":" .. debug_info.currentline end
|
if raw then return file_path .. ":" .. debug_info.currentline end
|
||||||
|
|||||||
Reference in New Issue
Block a user