/lua_lanes/tests/error.lua
https://bitbucket.org/xixs/lua · Lua · 47 lines · 25 code · 10 blank · 12 comment · 1 complexity · 3054be46b5264d9dac6e18015532bbcd MD5 · raw file
- --
- -- Error reporting
- --
- -- Note: this code is supposed to end in errors; not included in 'make test'
- --
-
- local lanes = require "lanes".configure()
-
- 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" ) -- only true if lanes was compiled with ERROR_FULL_STACK == 1
- 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