aboutsummaryrefslogtreecommitdiff
path: root/testes
diff options
context:
space:
mode:
Diffstat (limited to 'testes')
-rw-r--r--testes/constructs.lua25
1 files changed, 25 insertions, 0 deletions
diff --git a/testes/constructs.lua b/testes/constructs.lua
index a74a8c04..0d9ec92d 100644
--- a/testes/constructs.lua
+++ b/testes/constructs.lua
@@ -103,6 +103,31 @@ do -- test old bug (first name could not be an `upvalue')
103 local a; function f(x) x={a=1}; x={x=1}; x={G=1} end 103 local a; function f(x) x={a=1}; x={x=1}; x={G=1} end
104end 104end
105 105
106
107do -- bug since 5.4.0
108 -- create code with a table using more than 256 constants
109 local code = {"local x = {"}
110 for i = 1, 257 do
111 code[#code + 1] = i .. ".1,"
112 end
113 code[#code + 1] = "};"
114 code = table.concat(code)
115
116 -- add "ret" to the end of that code and checks that
117 -- it produces the expected value "val"
118 local function check (ret, val)
119 local code = code .. ret
120 code = load(code)
121 assert(code() == val)
122 end
123
124 check("return (1 ~ (2 or 3))", 1 ~ 2)
125 check("return (1 | (2 or 3))", 1 | 2)
126 check("return (1 + (2 or 3))", 1 + 2)
127 check("return (1 << (2 or 3))", 1 << 2)
128end
129
130
106function f (i) 131function f (i)
107 if type(i) ~= 'number' then return i,'jojo'; end; 132 if type(i) ~= 'number' then return i,'jojo'; end;
108 if i > 0 then return i, f(i-1); end; 133 if i > 0 then return i, f(i-1); end;