aboutsummaryrefslogtreecommitdiff
path: root/testes/calls.lua
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2024-11-19 14:09:18 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2024-11-19 14:09:18 -0300
commit50c7c915ee2fa239043d5456237f5145d064089b (patch)
tree386e17e4baa154bb60dc54c1a00c751e3adedde9 /testes/calls.lua
parentb117bdb3448778d9e7f9a0302791e8ac3bb97ddd (diff)
downloadlua-50c7c915ee2fa239043d5456237f5145d064089b.tar.gz
lua-50c7c915ee2fa239043d5456237f5145d064089b.tar.bz2
lua-50c7c915ee2fa239043d5456237f5145d064089b.zip
Debug information about extra arguments from __call
'debug.getinfo' can return number of extra arguments added to a call by a chain of __call metavalues. That information is being used to improve error messages about errors in these extra arguments.
Diffstat (limited to 'testes/calls.lua')
-rw-r--r--testes/calls.lua11
1 files changed, 11 insertions, 0 deletions
diff --git a/testes/calls.lua b/testes/calls.lua
index 12312d60..31028215 100644
--- a/testes/calls.lua
+++ b/testes/calls.lua
@@ -204,6 +204,17 @@ do print"testing chains of '__call'"
204 assert(Res[i][1] == i) 204 assert(Res[i][1] == i)
205 end 205 end
206 assert(Res[N + 1] == "a" and Res[N + 2] == "b" and Res[N + 3] == "c") 206 assert(Res[N + 1] == "a" and Res[N + 2] == "b" and Res[N + 3] == "c")
207
208 local function u (...)
209 local n = debug.getinfo(1, 't').extraargs
210 assert(select("#", ...) == n)
211 return n
212 end
213
214 for i = 0, N do
215 assert(u() == i)
216 u = setmetatable({}, {__call = u})
217 end
207end 218end
208 219
209 220