aboutsummaryrefslogtreecommitdiff
path: root/testes
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2021-06-14 13:28:21 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2021-06-14 13:28:21 -0300
commit04e19712a5d48b84869f9942836ff8314fb0be8e (patch)
tree75aab8dff5bdf07026080eba0189e4025ec3b7ee /testes
parent901d76009346d76996679c02deee708bf225e91e (diff)
downloadlua-04e19712a5d48b84869f9942836ff8314fb0be8e.tar.gz
lua-04e19712a5d48b84869f9942836ff8314fb0be8e.tar.bz2
lua-04e19712a5d48b84869f9942836ff8314fb0be8e.zip
C functions can be tail called, too
A tail call to a C function can have the behavior of a "real" tail call, reusing the stack frame of the caller.
Diffstat (limited to 'testes')
-rw-r--r--testes/coroutine.lua2
-rw-r--r--testes/errors.lua4
2 files changed, 3 insertions, 3 deletions
diff --git a/testes/coroutine.lua b/testes/coroutine.lua
index b36b76ea..461e0377 100644
--- a/testes/coroutine.lua
+++ b/testes/coroutine.lua
@@ -205,7 +205,7 @@ do
205 co = coroutine.create(function () return pcall(foo) end) 205 co = coroutine.create(function () return pcall(foo) end)
206 local st1, st2, err = coroutine.resume(co) 206 local st1, st2, err = coroutine.resume(co)
207 assert(st1 and not st2 and err == 43) 207 assert(st1 and not st2 and err == 43)
208 assert(X == 43 and Y.name == "pcall") 208 assert(X == 43 and Y.what == "C")
209 209
210 -- recovering from errors in __close metamethods 210 -- recovering from errors in __close metamethods
211 local track = {} 211 local track = {}
diff --git a/testes/errors.lua b/testes/errors.lua
index a3d0676b..825f37c2 100644
--- a/testes/errors.lua
+++ b/testes/errors.lua
@@ -26,7 +26,7 @@ end
26 26
27local function checkmessage (prog, msg, debug) 27local function checkmessage (prog, msg, debug)
28 local m = doit(prog) 28 local m = doit(prog)
29 if debug then print(m) end 29 if debug then print(m, msg) end
30 assert(string.find(m, msg, 1, true)) 30 assert(string.find(m, msg, 1, true))
31end 31end
32 32
@@ -289,7 +289,7 @@ end]], "global 'insert'")
289 289
290checkmessage([[ -- tail call 290checkmessage([[ -- tail call
291 return math.sin("a") 291 return math.sin("a")
292]], "'sin'") 292]], "sin")
293 293
294checkmessage([[collectgarbage("nooption")]], "invalid option") 294checkmessage([[collectgarbage("nooption")]], "invalid option")
295 295