mirror of
https://github.com/luau-lang/luau.git
synced 2025-08-26 11:27:08 +01:00
We're back on track after the long weekend! ## General - `clang-format`ed new code. Keep your code tidy! - Disable some Luau tests that are broken currently. - Enable fragment autocomplete to do tagged union completion for modules typechecked in the old solver. ## New Type Solver - Fix false positives on generic type packs in non-strict mode. - Update type signature of `setmetatable` to be `<T, MT>(T, MT) -> setmetatable<T, MT>`. - Make local type aliases available in type functions. For example: ``` type Foo = number type Array<T> = {T} type function Bar(t) return types.unionof(Foo, Array(t)) end ``` ## VM/Runtime - Make sure `lua_unref` doesn't accept refs which did not exist in the table. --- Co-authored-by: Andy Friesen <afriesen@roblox.com> Co-authored-by: Ariel Weiss <aaronweiss@roblox.com> Co-authored-by: Hunter Goldstein <hgoldstein@roblox.com> Co-authored-by: Sora Kanosue <skanosue@roblox.com> Co-authored-by: Talha Pathan <tpathan@roblox.com> Co-authored-by: Vighnesh Vijay <vvijay@roblox.com> Co-authored-by: Vyacheslav Egorov <vegorov@roblox.com> --------- Co-authored-by: Hunter Goldstein <hgoldstein@roblox.com> Co-authored-by: Varun Saini <61795485+vrn-sn@users.noreply.github.com> Co-authored-by: Menarul Alam <malam@roblox.com> Co-authored-by: Aviral Goel <agoel@roblox.com> Co-authored-by: Vighnesh <vvijay@roblox.com> Co-authored-by: Vyacheslav Egorov <vegorov@roblox.com> Co-authored-by: Ariel Weiss <aaronweiss@roblox.com> Co-authored-by: Andy Friesen <afriesen@roblox.com>
32 lines
878 B
C++
32 lines
878 B
C++
// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
|
|
|
|
#pragma once
|
|
|
|
#include "Luau/Constraint.h"
|
|
#include "Luau/TypeIds.h"
|
|
#include "Luau/Error.h"
|
|
|
|
#include <vector>
|
|
|
|
namespace Luau
|
|
{
|
|
|
|
struct ConstraintSet
|
|
{
|
|
NotNull<Scope> rootScope;
|
|
|
|
std::vector<ConstraintPtr> constraints;
|
|
|
|
// The set of all free types created during constraint generation
|
|
TypeIds freeTypes;
|
|
|
|
// Map a function's signature scope back to its signature type. Once we've
|
|
// dispatched all of the constraints pertaining to a particular free type,
|
|
// we use this mapping to generalize that free type.
|
|
DenseHashMap<Scope*, TypeId> scopeToFunction{nullptr};
|
|
|
|
// It is pretty uncommon for constraint generation to itself produce errors, but it can happen.
|
|
std::vector<TypeError> errors;
|
|
};
|
|
|
|
} // namespace Luau
|