48 lines
917 B
Lua
48 lines
917 B
Lua
--
|
|
-- Error reporting
|
|
--
|
|
-- Note: this code is supposed to end in errors; not included in 'make test'
|
|
--
|
|
|
|
require "lanes"
|
|
|
|
local function lane()
|
|
|
|
local subf= function() -- this so that we can see the call stack
|
|
--error "aa"
|
|
error({})
|
|
error(error)
|
|
end
|
|
local subf2= function()
|
|
subf()
|
|
end
|
|
subf2()
|
|
end
|
|
|
|
local function cleanup(err)
|
|
end
|
|
|
|
local lgen = lanes.gen("*", { --[[finalizer=cleanup]] }, lane)
|
|
|
|
---
|
|
io.stderr:write( "\n** Error catching **\n" )
|
|
--
|
|
local h= lgen()
|
|
local _,err,stack= h:join() -- wait for the lane (no automatic error propagation)
|
|
|
|
if err then
|
|
assert( type(stack)=="table" )
|
|
io.stderr:write( "Lane error: "..tostring(err).."\n" )
|
|
|
|
io.stderr:write( "\t", table.concat(stack,"\n\t"), "\n" );
|
|
end
|
|
|
|
---
|
|
io.stderr:write( "\n** Error propagation **\n" )
|
|
--
|
|
local h2= lgen()
|
|
local _= h2[0]
|
|
assert(false) -- does NOT get here
|
|
|
|
--never ends
|