mirror of
https://github.com/kikito/inspect.lua.git
synced 2024-12-15 14:34:21 +00:00
fixed metatable-related loop when a table is its own index. References #4
This commit is contained in:
parent
1514d86828
commit
2b502e1a81
@ -64,7 +64,7 @@ local function getDictionaryKeys(t)
|
||||
end
|
||||
|
||||
local function getToStringResultSafely(t, mt)
|
||||
local __tostring = type(mt) == 'table' and mt.__tostring
|
||||
local __tostring = type(mt) == 'table' and rawget(mt, '__tostring')
|
||||
local string, status
|
||||
if type(__tostring) == 'function' then
|
||||
status, string = pcall(__tostring, t)
|
||||
|
@ -192,6 +192,7 @@ describe( 'inspect', function()
|
||||
}]])
|
||||
end)
|
||||
|
||||
describe('When a table is its own metatable', function()
|
||||
it('accepts a table that is its own metatable without stack overflowing', function()
|
||||
local x = {}
|
||||
setmetatable(x,x)
|
||||
@ -200,6 +201,17 @@ describe( 'inspect', function()
|
||||
}]])
|
||||
end)
|
||||
|
||||
it('can invoke the __tostring method without stack overflowing', function()
|
||||
local t = {}
|
||||
t.__index = t
|
||||
setmetatable(t,t)
|
||||
assert.equals(inspect(t), [[<1>{
|
||||
__index = <table 1>,
|
||||
<metatable> = <table 1>
|
||||
}]])
|
||||
end)
|
||||
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
|
Loading…
Reference in New Issue
Block a user