-
Notifications
You must be signed in to change notification settings - Fork 397
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Exceeded allowed depth big & chain #645
Labels
bug
Something isn't working
Comments
We have syntactic limits on all constructs - they exist by design. It's the same reason for why you can do this:
but can not do this:
Since our parser and many internal algorithms are recursive, this helps make sure that we use a limited amount of stack space in recursive algorithms. We will double check whether the limits are required in this specific case though. |
AmaranthineCodices
added a commit
that referenced
this issue
Oct 27, 2023
## What's changed - `bit32.byteswap` added ([RFC](https://github.com/luau-lang/rfcs/blob/4f543ec23b6a1b53396e0803dd253c83041bae62/docs/function-bit32-byteswap.md)) - Buffer library implementation ([RFC](https://github.com/luau-lang/rfcs/blob/4f543ec23b6a1b53396e0803dd253c83041bae62/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>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I have a very & chain of
& (className: "Name") -> ((NameProperties) -> Name)
what Exceeded the allowed depth but if I split it up in 2 and then do
export type ClassNameConstructors = ClassNameConstructors0 & ClassNameConstructors1
it does not exceed the allowed depth and everything is fine.both scripts are in this zip document
TestCases.zip
So I think luau should be able to handle big chains of &
and also why does the ClassNameConstructors0 & ClassNameConstructors1 work but just adding it in all big & chain not?
The text was updated successfully, but these errors were encountered: