blob: 673bcb58d101cf81bdc4567af657cfc5162297bc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
--
-- 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
|