Added tests for string reuse by the scanner

This commit is contained in:
Roberto Ierusalimschy 2021-08-11 11:19:33 -03:00
parent e2c07dcbf7
commit 59acd79c05
2 changed files with 25 additions and 1 deletions

View File

@ -241,7 +241,7 @@ do -- named objects (field '__name')
assert(o == x)
return "ABC"
end})
a, b, c = T.testC("pushint 10; Ltolstring -2; return 3", x)
local a, b, c = T.testC("pushint 10; Ltolstring -2; return 3", x)
assert(a == x and b == 10 and c == "ABC")
end
end

View File

@ -208,6 +208,30 @@ a = nil
b = nil
do -- reuse of long strings
-- get the address of a string
local function getadd (s) return string.format("%p", s) end
local s1 <const> = "01234567890123456789012345678901234567890123456789"
local s2 <const> = "01234567890123456789012345678901234567890123456789"
local s3 = "01234567890123456789012345678901234567890123456789"
local function foo() return s1 end
local function foo1() return s3 end
local function foo2()
return "01234567890123456789012345678901234567890123456789"
end
local a1 = getadd(s1)
assert(a1 == getadd(s2))
assert(a1 == getadd(foo()))
assert(a1 == getadd(foo1()))
assert(a1 == getadd(foo2()))
local sd = "0123456789" .. "0123456789012345678901234567890123456789"
assert(sd == s1 and getadd(sd) ~= a1)
end
-- testing line ends
prog = [[
a = 1 -- a comment