0.568
Analysis Changes
- A small subset of control-flow refinements have been added to recognize type options that are unreachable after a conditional/unconditional code block. (Fixes #356).
Some examples:
local function f(x: string?)
if not x then return end
-- x is 'string' here
end
Throwing calls like error
or assert(false)
instead of 'return' are also recognized.
Existing complex refinements like type/typeof and tagged union checks are expected to work, among others.
To enable this feature, LuauTinyControlFlowAnalysis
exclusion has to be removed from ExperimentalFlags.h
.
If will become enabled unconditionally in the future.
-
Linter has been integrated into the typechecker analysis so that type-aware lint warnings can work in any mode
Frontend::lint
methods were deprecated,Frontend::check
has to be used instead withrunLintChecks
option set.
Resulting lint warning are located insideCheckResult
. -
Part of Type error suppression RFC was implemented making subtyping checks with
any
type transitive.
Runtime Changes
- Fixed large performance drop and increased memory consumption when array is filled at an offset (Fixes #590)
For extra notes about internal development, you can read #865