luau/Analysis/include/Luau/Anyification.h

42 lines
1.2 KiB
C
Raw Normal View History

2022-08-18 22:04:33 +01: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-01-03 17:33:19 +00:00
#include "Luau/Type.h"
2022-08-18 22:04:33 +01: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
{
2023-01-03 17:33:19 +00:00
Anyification(TypeArena* arena, NotNull<Scope> scope, NotNull<BuiltinTypes> builtinTypes, InternalErrorReporter* iceHandler, TypeId anyType,
2022-09-08 22:44:50 +01:00
TypePackId anyTypePack);
2023-01-03 17:33:19 +00:00
Anyification(TypeArena* arena, const ScopePtr& scope, NotNull<BuiltinTypes> builtinTypes, InternalErrorReporter* iceHandler, TypeId anyType,
2022-09-08 22:44:50 +01:00
TypePackId anyTypePack);
2022-08-18 22:04:33 +01:00
NotNull<Scope> scope;
2023-01-03 17:33:19 +00:00
NotNull<BuiltinTypes> builtinTypes;
2022-08-18 22:04:33 +01: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;
};
2022-09-02 00:00:14 +01:00
} // namespace Luau