mirror of
https://github.com/luau-lang/luau.git
synced 2024-11-16 06:45:44 +08:00
b4ebad4862
All of our changes this week have been focused on the new type solver and the JIT. As we march toward feature parity with the old solver, we've tightened up a bunch of lingering issues with overload resolution, unsealed tables, and type normalization. We've also fixed a bunch of crashes and assertion failures in the new solver. On the JIT front, we've started work on an A64 backend, improved the IR analysis in a bunch of cases, and implemented assembly generation for the builtin functions `type()` and `typeof()`. --------- Co-authored-by: Arseny Kapoulkine <arseny.kapoulkine@gmail.com> Co-authored-by: Vyacheslav Egorov <vegorov@roblox.com>
37 lines
731 B
C++
37 lines
731 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 <memory>
|
|
|
|
namespace Luau
|
|
{
|
|
|
|
struct Scope;
|
|
using ScopePtr = std::shared_ptr<Scope>;
|
|
|
|
enum class ControlFlow
|
|
{
|
|
None = 0b00001,
|
|
Returns = 0b00010,
|
|
Throws = 0b00100,
|
|
Break = 0b01000, // Currently unused.
|
|
Continue = 0b10000, // Currently unused.
|
|
};
|
|
|
|
inline ControlFlow operator&(ControlFlow a, ControlFlow b)
|
|
{
|
|
return ControlFlow(int(a) & int(b));
|
|
}
|
|
|
|
inline ControlFlow operator|(ControlFlow a, ControlFlow b)
|
|
{
|
|
return ControlFlow(int(a) | int(b));
|
|
}
|
|
|
|
inline bool matches(ControlFlow a, ControlFlow b)
|
|
{
|
|
return (a & b) != ControlFlow(0);
|
|
}
|
|
|
|
} // namespace Luau
|