Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Roblox
GitHub Repository: Roblox/luau
Path: blob/master/Analysis/src/GlobalTypes.cpp
2725 views
1
// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
2
3
#include "Luau/GlobalTypes.h"
4
5
LUAU_FASTFLAG(LuauIntegerType)
6
7
namespace Luau
8
{
9
10
GlobalTypes::GlobalTypes(NotNull<BuiltinTypes> builtinTypes, SolverMode mode)
11
: builtinTypes(builtinTypes)
12
, mode(mode)
13
{
14
globalScope = std::make_shared<Scope>(globalTypes.addTypePack(TypePackVar{FreeTypePack{TypeLevel{}}}));
15
globalTypeFunctionScope = std::make_shared<Scope>(globalTypes.addTypePack(TypePackVar{FreeTypePack{TypeLevel{}}}));
16
17
globalScope->addBuiltinTypeBinding("any", TypeFun{{}, builtinTypes->anyType});
18
globalScope->addBuiltinTypeBinding("nil", TypeFun{{}, builtinTypes->nilType});
19
globalScope->addBuiltinTypeBinding("number", TypeFun{{}, builtinTypes->numberType});
20
if (FFlag::LuauIntegerType)
21
globalScope->addBuiltinTypeBinding("integer", TypeFun{{}, builtinTypes->integerType});
22
globalScope->addBuiltinTypeBinding("string", TypeFun{{}, builtinTypes->stringType});
23
globalScope->addBuiltinTypeBinding("boolean", TypeFun{{}, builtinTypes->booleanType});
24
globalScope->addBuiltinTypeBinding("thread", TypeFun{{}, builtinTypes->threadType});
25
globalScope->addBuiltinTypeBinding("buffer", TypeFun{{}, builtinTypes->bufferType});
26
globalScope->addBuiltinTypeBinding("unknown", TypeFun{{}, builtinTypes->unknownType});
27
globalScope->addBuiltinTypeBinding("never", TypeFun{{}, builtinTypes->neverType});
28
29
unfreeze(*builtinTypes->arena);
30
TypeId stringMetatableTy = makeStringMetatable(builtinTypes, mode);
31
asMutable(builtinTypes->stringType)->ty.emplace<PrimitiveType>(PrimitiveType::String, stringMetatableTy);
32
persist(stringMetatableTy);
33
freeze(*builtinTypes->arena);
34
}
35
36
} // namespace Luau
37
38