diff options
Diffstat (limited to 'testes/errors.lua')
-rw-r--r-- | testes/errors.lua | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/testes/errors.lua b/testes/errors.lua index 80d91a92..0925fe58 100644 --- a/testes/errors.lua +++ b/testes/errors.lua | |||
@@ -117,6 +117,31 @@ else | |||
117 | return 1 | 117 | return 1 |
118 | ]] | 118 | ]] |
119 | assert(string.find(res, "xuxu.-main chunk")) | 119 | assert(string.find(res, "xuxu.-main chunk")) |
120 | |||
121 | do -- tests for error messages about extra arguments from __call | ||
122 | local function createobj (n) | ||
123 | -- function that raises an error on its n-th argument | ||
124 | local code = string.format("argerror %d 'msg'", n) | ||
125 | local func = T.makeCfunc(code) | ||
126 | -- create a chain of 2 __call objects | ||
127 | local M = setmetatable({}, {__call = func}) | ||
128 | M = setmetatable({}, {__call = M}) | ||
129 | -- put it as a method for a new object | ||
130 | return {foo = M} | ||
131 | end | ||
132 | |||
133 | _G.a = createobj(1) -- error in first (extra) argument | ||
134 | checkmessage("a:foo()", "bad extra argument #1") | ||
135 | |||
136 | _G.a = createobj(2) -- error in second (extra) argument | ||
137 | checkmessage("a:foo()", "bad extra argument #2") | ||
138 | |||
139 | _G.a = createobj(3) -- error in self (after two extra arguments) | ||
140 | checkmessage("a:foo()", "bad self") | ||
141 | |||
142 | _G.a = createobj(4) -- error in first regular argument (after self) | ||
143 | checkmessage("a:foo()", "bad argument #1") | ||
144 | end | ||
120 | end | 145 | end |
121 | 146 | ||
122 | 147 | ||