mirror of
https://github.com/luau-lang/luau.git
synced 2024-11-15 22:35:43 +08:00
e5ec0cdff3
## What's changed - `bit32.byteswap` added ([RFC](4f543ec23b/docs/function-bit32-byteswap.md
)) - Buffer library implementation ([RFC](4f543ec23b/docs/type-byte-buffer.md
)) - Fixed a missing `stdint.h` include - Fixed parser limiter for recursive type annotations being kind of weird (fixes #645) ### Native Codegen - Fixed a pair of issues when lowering `bit32.extract` - Fixed a narrow edge case that could result in an infinite loop without an interruption - Fixed a negative array out-of-bounds access issue - Temporarily reverted linear block predecessor value propagation ### New type solver - We now type check assignments to annotated variables - Fixed some test cases under local type inference - Moved `isPending` checks for type families to improve performance - Optimized our process for testing if a free type is sufficiently solved - Removed "none ptr" from lea instruction disassembly logging ### Build system & tooling - CMake configuration now validates dependencies to maintain separation between components - Improvements to the fuzzer coverage - Deduplicator for fuzzed callstacks --------- Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com> Co-authored-by: Vyacheslav Egorov <vegorov@roblox.com> Co-authored-by: Andy Friesen <afriesen@roblox.com> Co-authored-by: Aaron Weiss <aaronweiss@roblox.com> Co-authored-by: Vighnesh Vijay <vvijay@roblox.com>
71 lines
1.1 KiB
Lua
71 lines
1.1 KiB
Lua
-- This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
|
|
print("testing interrupts")
|
|
|
|
-- this function will be called by C code with a special interrupt handler that validates hit locations
|
|
function test()
|
|
function foo()
|
|
for i=1,10 do end
|
|
return
|
|
end
|
|
|
|
foo()
|
|
|
|
function bar()
|
|
local i = 0
|
|
while i < 10 do
|
|
i += i + 1
|
|
end
|
|
end
|
|
|
|
bar()
|
|
|
|
function baz()
|
|
end
|
|
|
|
baz()
|
|
end
|
|
|
|
-- these functions will be called by C code with a special interrupt handler that terminates after a few invocations
|
|
function infloop1()
|
|
while true do end
|
|
end
|
|
|
|
function infloop2()
|
|
while true do continue end
|
|
end
|
|
|
|
function infloop3()
|
|
repeat until false
|
|
end
|
|
|
|
function infloop4()
|
|
repeat continue until false
|
|
end
|
|
|
|
function infloop5()
|
|
for i=0,0,0 do end
|
|
end
|
|
|
|
function infloop6()
|
|
for i=0,0,0 do continue end
|
|
end
|
|
|
|
function infloop7()
|
|
for i=1,math.huge do end
|
|
end
|
|
|
|
function infloop8()
|
|
for i=1,math.huge do continue end
|
|
end
|
|
|
|
function infloop9()
|
|
-- technically not a loop, but an exponentially recursive function
|
|
local function boom()
|
|
boom()
|
|
boom()
|
|
end
|
|
boom()
|
|
end
|
|
|
|
return "OK"
|