summaryrefslogtreecommitdiff
path: root/testes/api.lua
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2018-11-12 14:15:50 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2018-11-12 14:15:50 -0200
commit5fda30b4f9f82b901113a6e666c797f835c708eb (patch)
treea8011434f8c2ccee920d955db05ba4917a00e5f8 /testes/api.lua
parent9eafe9c053ef17a0980ab32082bf229bd58e963b (diff)
downloadlua-github-5fda30b4f9f82b901113a6e666c797f835c708eb.tar.gz
'lua_toclose' gets the index to be closed as an argument
Sometimes it is useful to mark to-be-closed an index that is not at the top of the stack (e.g., if the value to be closed came from a function call returning multiple values).
Diffstat (limited to 'testes/api.lua')
-rw-r--r--testes/api.lua18
1 files changed, 10 insertions, 8 deletions
diff --git a/testes/api.lua b/testes/api.lua
index a6ddca8e..ed857fd0 100644
--- a/testes/api.lua
+++ b/testes/api.lua
@@ -985,18 +985,20 @@ do
return x
end
- local a = T.testC([[
+ local a, b = T.testC([[
call 0 1 # create resource
- toclose # mark it to be closed
- return 1
+ pushint 34
+ toclose -2 # mark call result to be closed
+ toclose -1 # mark number to be closed (will be ignored)
+ return 2
]], newresource)
- assert(a[1] == 11)
+ assert(a[1] == 11 and b == 34)
assert(#openresource == 0) -- was closed
-- repeat the test, but calling function in a 'multret' context
local a = {T.testC([[
call 0 1 # create resource
- toclose # mark it to be closed
+ toclose 2 # mark it to be closed
return 2
]], newresource)}
assert(type(a[1]) == "string" and a[2][1] == 11)
@@ -1005,7 +1007,7 @@ do
-- error
local a, b = pcall(T.testC, [[
call 0 1 # create resource
- toclose # mark it to be closed
+ toclose -1 # mark it to be closed
error # resource is the error object
]], newresource)
assert(a == false and b[1] == 11)
@@ -1019,10 +1021,10 @@ do
local a = T.testC([[
pushvalue 2
call 0 1 # create resource
- toclose # mark it to be closed
+ toclose -1 # mark it to be closed
pushvalue 2
call 0 1 # create another resource
- toclose # mark it to be closed
+ toclose -1 # mark it to be closed
pushvalue 3
pushint 2 # there should be two open resources
call 1 0