luau/Analysis/include/Luau/Anyification.h

55 lines
1.3 KiB
C
Raw Permalink 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-10-20 21:36:26 +01:00
#include "Luau/TypeFwd.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
{
2024-08-02 00:25:12 +01: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-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;
};
2023-10-20 21:36:26 +01:00
} // namespace Luau