luau/EqSat/include/Luau/Id.h
Hunter Goldstein c799a548e4 Sync to version/652
> What's new?

* Fragment Autocomplete: a new API allows for type checking a small
  fragment of code against an existing file, significantly speeding up
  autocomplete performance in large files.

> New Solver

* E-Graphs have landed: this is an ongoing approach to make the new type solver
  simplify types in a more consistent and principled manner, based on
  similar work (e.g.: https://egraphs-good.github.io/).
* Adds support for exported / local user type functions.
* Fixes a set of bugs in which the new solver will fail to complete
  inference for simple expressions with just literals and operators.

> General

* It is now an explicit runtime error to `require` a path with a ".lua" or
  ".luau" extension, and the error message will suggest removing the extension.
  ```
  require("path/to/mymodule.lua")
  ```
* Fixes a bug in which whether two `Symbol`s are equal depends on
  whether the new solver is enabled.
2024-11-08 11:01:20 -08:00

31 lines
551 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 <cstddef>
#include <functional>
namespace Luau::EqSat
{
struct Id final
{
explicit Id(uint32_t id);
explicit operator uint32_t() const;
bool operator==(Id rhs) const;
bool operator!=(Id rhs) const;
bool operator<(Id rhs) const;
private:
uint32_t id;
};
} // namespace Luau::EqSat
template<>
struct std::hash<Luau::EqSat::Id>
{
size_t operator()(Luau::EqSat::Id id) const;
};