<!DOCTYPE html>
<html data-lt-installed="true">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body style="padding-bottom: 1px;">
<p>Sergey,<br>
</p>
<div class="moz-cite-prefix">On 21.08.2024 11:58, Sergey Kaplun
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:f9bcb0f2a1d4e0b5fe262cfe89045fd636254dab.1724228998.git.skaplun@tarantool.org">
<pre class="moz-quote-pre" wrap="">This patch moves the aforementioned test from the <misc> to the <lang/>
directory, includes it in <index>, names the subtests, and adds testing
of the error message for all non-tail call cases.
Part of tarantool/tarantool#9398
---</pre>
</blockquote>
thanks for the patch! LGTM with a minor comment below.<br>
<blockquote type="cite"
cite="mid:f9bcb0f2a1d4e0b5fe262cfe89045fd636254dab.1724228998.git.skaplun@tarantool.org">
<pre class="moz-quote-pre" wrap="">
test/LuaJIT-tests/lang/index | 1 +
test/LuaJIT-tests/lang/stackov.lua | 48 ++++++++++++++++++++++++++++++</pre>
</blockquote>
Probably filename "stack_overflow.lua" will be better. Feel free to
ignore.<br>
<blockquote type="cite"
cite="mid:f9bcb0f2a1d4e0b5fe262cfe89045fd636254dab.1724228998.git.skaplun@tarantool.org">
<pre class="moz-quote-pre" wrap="">
test/LuaJIT-tests/misc/stackov.lua | 40 -------------------------
3 files changed, 49 insertions(+), 40 deletions(-)
create mode 100644 test/LuaJIT-tests/lang/stackov.lua
delete mode 100644 test/LuaJIT-tests/misc/stackov.lua
diff --git a/test/LuaJIT-tests/lang/index b/test/LuaJIT-tests/lang/index
index b262c555..fa6db3c3 100644
--- a/test/LuaJIT-tests/lang/index
+++ b/test/LuaJIT-tests/lang/index
@@ -17,6 +17,7 @@ lightud.lua
modulo.lua
concat.lua
self.lua
+stackov.lua
table.lua
parse_comp.lua
parse_esc.lua
diff --git a/test/LuaJIT-tests/lang/stackov.lua b/test/LuaJIT-tests/lang/stackov.lua
new file mode 100644
index 00000000..21ae40b6
--- /dev/null
+++ b/test/LuaJIT-tests/lang/stackov.lua
@@ -0,0 +1,48 @@
+local function f()
+ f()
+end
+
+local function g(i)
+ g(i)
+end
+
+local function vtail(...)
+ return vtail(1, ...)
+end
+
+local function vcall(...)
+ vcall(1, ...)
+end
+
+local function test_error_msg(func, s)
+ local first = string.match(s, "[^\n]+")
+ local line = debug.getinfo(func, "S").linedefined + 1
+ assert(string.match(first, ":" .. line .. ": stack overflow$"))
+
+ local n = 1
+ for _ in string.gmatch(s, "\n") do n = n + 1 end
+ assert(n == 1 + 1 + 11 + 1 + 10)
+end
+
+do --- Base test.
+ local err, s = xpcall(f, debug.traceback)
+ assert(err == false)
+ test_error_msg(f, s)
+end
+
+do --- Stack overflow with non-empty arg list.
+ local err, s = xpcall(g, debug.traceback, 1)
+ assert(err == false)
+ test_error_msg(g, s)
+end
+
+do --- Vararg tail call with non-empty arg list. +slow
+ local err, s = xpcall(vtail, debug.traceback, 1)
+ assert(err == false)
+end
+
+do --- Vararg non-tail call.
+ local err, s = xpcall(vcall, debug.traceback, 1)
+ assert(err == false)
+ test_error_msg(vcall, s)
+end
diff --git a/test/LuaJIT-tests/misc/stackov.lua b/test/LuaJIT-tests/misc/stackov.lua
deleted file mode 100644
index ef105af6..00000000
--- a/test/LuaJIT-tests/misc/stackov.lua
+++ /dev/null
@@ -1,40 +0,0 @@
-
-local function f()
- f()
-end
-
-local err, s = xpcall(f, debug.traceback)
-assert(err == false)
-
-local first = string.match(s, "[^\n]+")
-local line = debug.getinfo(f, "S").linedefined+1
-assert(string.match(first, ":"..line..": stack overflow$"))
-
-local n = 1
-for _ in string.gmatch(s, "\n") do n = n + 1 end
-assert(n == 1+1+11+1+10)
-
-local function g(i)
- g(i)
-end
-
-local err, s = xpcall(g, debug.traceback, 1)
-assert(err == false)
-
---[[
--- too slow
-local function vtail(...)
- return vtail(1, ...)
-end
-
-local err, s = xpcall(vtail, debug.traceback, 1)
-assert(err == false)
---]]
-
-local function vcall(...)
- vcall(1, ...)
-end
-
-local err, s = xpcall(vcall, debug.traceback, 1)
-assert(err == false)
-
</pre>
</blockquote>
</body>
<lt-container></lt-container>
</html>