aboutsummaryrefslogtreecommitdiff
path: root/testes
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2019-07-31 11:22:39 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2019-07-31 11:22:39 -0300
commitfe040633a1d64af4c19acc4707adb47413a3cd4a (patch)
treee6b690efda6a39ce6cea342dd73380dfa47c8b9f /testes
parentf645d3157372c73573dff221c5b26691cb0e7d56 (diff)
downloadlua-fe040633a1d64af4c19acc4707adb47413a3cd4a.tar.gz
lua-fe040633a1d64af4c19acc4707adb47413a3cd4a.tar.bz2
lua-fe040633a1d64af4c19acc4707adb47413a3cd4a.zip
Tracebacks recognize metamethods '__close'
Diffstat (limited to 'testes')
-rw-r--r--testes/locals.lua21
1 files changed, 17 insertions, 4 deletions
diff --git a/testes/locals.lua b/testes/locals.lua
index 6eb1ba0e..99fa79cd 100644
--- a/testes/locals.lua
+++ b/testes/locals.lua
@@ -316,14 +316,27 @@ do -- errors in __close
316 assert(log[1] == 5 and log[2] == 4 and log[3] == 4 and log[4] == 4 316 assert(log[1] == 5 and log[2] == 4 and log[3] == 4 and log[4] == 4
317 and #log == 4) 317 and #log == 4)
318 318
319 -- error leaving a block
320 local function foo (...)
321 do
322 local x1 <close> = func2close(function () error("Y") end)
323 local x123 <close> = func2close(function () error("X") end)
324 end
325 end
326
327 local st, msg = xpcall(foo, debug.traceback)
328 assert(string.match(msg, "^[^ ]* X"))
329 assert(string.find(msg, "in metamethod 'close'"))
330
319 -- error in toclose in vararg function 331 -- error in toclose in vararg function
320 function foo (...) 332 local function foo (...)
321 local x123 <close> = 10 333 local x123 <close> = func2close(function () error("X") end)
322 end 334 end
323 335
324 local st, msg = pcall(foo) 336 local st, msg = xpcall(foo, debug.traceback)
325 assert(string.find(msg, "'x123'")) 337 assert(string.match(msg, "^[^ ]* X"))
326 338
339 assert(string.find(msg, "in metamethod 'close'"))
327end 340end
328 341
329 342