/src/lua_lanes/tests/error.lua
Lua | 48 lines | 26 code | 10 blank | 12 comment | 1 complexity | 6b1fc461121dea22421b31efea5ed4ef MD5 | raw file
- --
- -- Error reporting
- --
- -- Note: this code is supposed to end in errors; not included in 'make test'
- --
-
- local lanes = require "lanes"
- lanes.configure( 1)
-
- 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