diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2018-11-12 14:15:50 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2018-11-12 14:15:50 -0200 |
| commit | 5fda30b4f9f82b901113a6e666c797f835c708eb (patch) | |
| tree | a8011434f8c2ccee920d955db05ba4917a00e5f8 /testes/api.lua | |
| parent | 9eafe9c053ef17a0980ab32082bf229bd58e963b (diff) | |
| download | lua-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.lua | 18 |
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 |
