aboutsummaryrefslogtreecommitdiff
path: root/testes
diff options
context:
space:
mode:
authorRoberto I <roberto@inf.puc-rio.br>2025-11-11 14:40:30 -0300
committerRoberto I <roberto@inf.puc-rio.br>2025-11-11 14:40:30 -0300
commit5b7d9987642f72d44223a8e5e79e013bb2b3d579 (patch)
tree0a755e85069f2c19609500151fec5b1e6ff30f88 /testes
parent81f4def54f440e045b1401f11ef78b65b56b7abe (diff)
downloadlua-5b7d9987642f72d44223a8e5e79e013bb2b3d579.tar.gz
lua-5b7d9987642f72d44223a8e5e79e013bb2b3d579.tar.bz2
lua-5b7d9987642f72d44223a8e5e79e013bb2b3d579.zip
External strings are as good as internal ones
A '__mode' metafield and an "n" key both can be external strings.
Diffstat (limited to 'testes')
-rw-r--r--testes/strings.lua17
1 files changed, 17 insertions, 0 deletions
diff --git a/testes/strings.lua b/testes/strings.lua
index 46912d43..84ff1154 100644
--- a/testes/strings.lua
+++ b/testes/strings.lua
@@ -540,6 +540,23 @@ else
540 assert(y == x) 540 assert(y == x)
541 local z = T.externstr(x) -- external allocated long string 541 local z = T.externstr(x) -- external allocated long string
542 assert(z == y) 542 assert(z == y)
543
544 local e = T.externstr("") -- empty external string
545 assert(e .. "x" == "x" and "x" .. e == "x")
546 assert(e .. e == "" and #e == 0)
547
548 -- external string as the "n" key in vararg table
549 local n = T.externstr("n")
550 local n0 = T.externstr("n\0")
551 local function aux (...t) assert(t[n0] == nil); return t[n] end
552 assert(aux(10, 20, 30) == 3)
553
554 -- external string as mode in weak table
555 local t = setmetatable({}, {__mode = T.externstr("kv")})
556 t[{}] = {}
557 assert(next(t))
558 collectgarbage()
559 assert(next(t) == nil)
543end 560end
544 561
545print('OK') 562print('OK')