mirror of
https://github.com/luau-lang/luau.git
synced 2025-05-04 10:33:46 +01:00
* Fixed gcc warning about uninitialized `std::optional` * Fixed inlining of functions when they are used to compute their own arguments In the new type solver: * Type families that are not part of a function signature cannot be resolved at instantiation time and will now produce an error. This will be relaxed in the future when we get constraint clauses on function signatures (internally) * `never` type is now comparable * Improved typechecking of `for..in` statements * Fixed checks for number type in `Add` type family * Performance was improved, with particularly large gains on large projects And in native code generation (jit): * We eliminated the call instruction overhead when native code support is enabled in the VM * Small optimizations to arm64 lowering * Reworked LOP_GETIMPORT handling to reduce assembly code size * Fixed non-deterministic binary output * Fixed bad code generation caused by incorrect SSA to VM register links invalidation --------- Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com> Co-authored-by: Andy Friesen <afriesen@roblox.com>
40 lines
738 B
Lua
40 lines
738 B
Lua
-- This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
|
|
print("testing native code generation")
|
|
|
|
assert((function(x, y)
|
|
-- trigger a linear sequence
|
|
local t1 = x + 2
|
|
local t2 = x - 7
|
|
|
|
local a = x * 10
|
|
local b = a + 1
|
|
a = y -- update 'a' version
|
|
local t = {} -- call to allocate table forces a spill
|
|
local c = x * 10
|
|
return c, b, t, t1, t2
|
|
end)(5, 10) == 50)
|
|
|
|
local function fuzzfail1(...)
|
|
repeat
|
|
_ = nil
|
|
until not {}
|
|
for _ in ... do
|
|
for l0=_,_ do
|
|
end
|
|
return
|
|
end
|
|
end
|
|
|
|
local function fuzzFail2()
|
|
local _
|
|
do
|
|
repeat
|
|
_ = typeof(_),{_=_,}
|
|
_ = _(_._)
|
|
until _
|
|
end
|
|
end
|
|
|
|
assert(pcall(fuzzFail2) == false)
|
|
|
|
return('OK')
|