54 lines
1.2 KiB
Lua
54 lines
1.2 KiB
Lua
|
-- This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
|
||
|
print "testing builtin types"
|
||
|
|
||
|
local ignore =
|
||
|
{
|
||
|
-- these are permanently ignored, as they are only exposed in tests
|
||
|
"_G.limitedstack",
|
||
|
"_G.RTTI",
|
||
|
"_G.collectgarbage",
|
||
|
|
||
|
-- what follows is a set of mismatches that hopefully eventually will go down to 0
|
||
|
"_G.require", -- need to move to Roblox type defs
|
||
|
}
|
||
|
|
||
|
function verify(real, rtti, path)
|
||
|
if table.find(ignore, path) then
|
||
|
return
|
||
|
end
|
||
|
|
||
|
if real and rtti then
|
||
|
if type(real) == "table" then
|
||
|
assert(type(rtti) == "table", path .. " is not a table in type information")
|
||
|
|
||
|
local keys = {}
|
||
|
|
||
|
for k, v in pairs(real) do
|
||
|
keys[k] = 1
|
||
|
end
|
||
|
|
||
|
for k, v in pairs(rtti) do
|
||
|
keys[k] = 1
|
||
|
end
|
||
|
|
||
|
for k, v in pairs(keys) do
|
||
|
if k ~= "_G" then
|
||
|
verify(real[k], rtti[k], path .. '.' .. k)
|
||
|
end
|
||
|
end
|
||
|
else
|
||
|
assert(type(real) == rtti, path .. " has inconsistent types (" .. type(real) .. " vs " .. rtti .. ")")
|
||
|
end
|
||
|
else
|
||
|
if not rtti then
|
||
|
assert(false, path .. " missing from type information")
|
||
|
else
|
||
|
assert(false, path .. " present in type information but absent from VM")
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
verify(getmetatable(_G).__index, RTTI, "_G")
|
||
|
|
||
|
return 'OK'
|