2022-08-19 05:32:08 +08:00
|
|
|
// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "Luau/NotNull.h"
|
|
|
|
#include "Luau/Substitution.h"
|
2023-10-21 09:10:30 +08:00
|
|
|
#include "Luau/TypeFwd.h"
|
2022-08-19 05:32:08 +08:00
|
|
|
|
|
|
|
#include <memory>
|
|
|
|
|
|
|
|
namespace Luau
|
|
|
|
{
|
|
|
|
|
|
|
|
struct TypeArena;
|
|
|
|
struct Scope;
|
|
|
|
struct InternalErrorReporter;
|
|
|
|
using ScopePtr = std::shared_ptr<Scope>;
|
|
|
|
|
|
|
|
// A substitution which replaces free types by any
|
|
|
|
struct Anyification : Substitution
|
|
|
|
{
|
2024-08-02 22:30:04 +08:00
|
|
|
Anyification(
|
|
|
|
TypeArena* arena,
|
|
|
|
NotNull<Scope> scope,
|
|
|
|
NotNull<BuiltinTypes> builtinTypes,
|
|
|
|
InternalErrorReporter* iceHandler,
|
|
|
|
TypeId anyType,
|
|
|
|
TypePackId anyTypePack
|
|
|
|
);
|
|
|
|
Anyification(
|
|
|
|
TypeArena* arena,
|
|
|
|
const ScopePtr& scope,
|
|
|
|
NotNull<BuiltinTypes> builtinTypes,
|
|
|
|
InternalErrorReporter* iceHandler,
|
|
|
|
TypeId anyType,
|
|
|
|
TypePackId anyTypePack
|
|
|
|
);
|
2022-08-19 05:32:08 +08:00
|
|
|
NotNull<Scope> scope;
|
2023-01-05 04:53:17 +08:00
|
|
|
NotNull<BuiltinTypes> builtinTypes;
|
2022-08-19 05:32:08 +08:00
|
|
|
InternalErrorReporter* iceHandler;
|
|
|
|
|
|
|
|
TypeId anyType;
|
|
|
|
TypePackId anyTypePack;
|
|
|
|
bool normalizationTooComplex = false;
|
|
|
|
bool isDirty(TypeId ty) override;
|
|
|
|
bool isDirty(TypePackId tp) override;
|
|
|
|
TypeId clean(TypeId ty) override;
|
|
|
|
TypePackId clean(TypePackId tp) override;
|
|
|
|
|
|
|
|
bool ignoreChildren(TypeId ty) override;
|
|
|
|
bool ignoreChildren(TypePackId ty) override;
|
|
|
|
};
|
|
|
|
|
2023-10-21 09:10:30 +08:00
|
|
|
} // namespace Luau
|