Skip to content

Commit 8f9cff1

Browse files
committed
Bump Luau to 0.736
1 parent 9063514 commit 8f9cff1

155 files changed

Lines changed: 11812 additions & 3653 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎luau/Ast/include/Luau/Allocator.h‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
#include "Luau/Ast.h"
55
#include "Luau/Location.h"
6-
#include "Luau/DenseHash.h"
6+
#include "Luau/DenseHash2.h"
77
#include "Luau/Common.h"
88

99
#include <vector>

‎luau/Ast/include/Luau/Ast.h‎

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -957,13 +957,7 @@ class AstStatLocalFunction : public AstStat
957957
public:
958958
LUAU_RTTI(AstStatLocalFunction)
959959

960-
AstStatLocalFunction(
961-
const Location& location,
962-
AstLocal* name,
963-
AstExprFunction* func,
964-
bool isConst,
965-
Position constKeywordBegin
966-
);
960+
AstStatLocalFunction(const Location& location, AstLocal* name, AstExprFunction* func, bool isConst, Position constKeywordBegin);
967961

968962
void visit(AstVisitor* visitor) override;
969963

@@ -1129,10 +1123,12 @@ class AstStatClass : public AstStat
11291123
LUAU_RTTI(AstStatClass)
11301124

11311125
AstLocal* name;
1126+
AstExpr* super;
11321127
AstArray<AstClassMember> members;
11331128
bool exported;
1129+
bool open;
11341130

1135-
AstStatClass(const Location& location, AstLocal* name, AstArray<AstClassMember> members, bool exported);
1131+
AstStatClass(const Location& location, AstLocal* name, AstExpr* super, AstArray<AstClassMember> members, bool exported, bool open);
11361132

11371133
void visit(AstVisitor* visitor) override;
11381134
};
@@ -1195,14 +1191,16 @@ class AstTypeReference : public AstType
11951191
std::optional<Location> prefixLocation,
11961192
const Location& nameLocation,
11971193
bool hasParameterList = false,
1198-
const AstArray<AstTypeOrPack>& parameters = {}
1194+
const AstArray<AstTypeOrPack>& parameters = {},
1195+
AstLocal* prefixLocal = nullptr
11991196
);
12001197

12011198
void visit(AstVisitor* visitor) override;
12021199

12031200
bool hasParameterList;
12041201
std::optional<AstName> prefix;
12051202
std::optional<Location> prefixLocation;
1203+
AstLocal* prefixLocal = nullptr;
12061204
AstName name;
12071205
Location nameLocation;
12081206
AstArray<AstTypeOrPack> parameters;

‎luau/Ast/include/Luau/Lexer.h‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#include "Luau/Allocator.h"
55
#include "Luau/Ast.h"
66
#include "Luau/Location.h"
7-
#include "Luau/DenseHash.h"
7+
#include "Luau/DenseHash2.h"
88
#include "Luau/Common.h"
99

1010
#include <vector>
@@ -155,7 +155,7 @@ class AstNameTable
155155
size_t operator()(const Entry& e) const;
156156
};
157157

158-
DenseHashSet<Entry, EntryHash> data;
158+
DenseHashSet2<Entry, EntryHash> data;
159159

160160
Allocator& allocator;
161161
};

‎luau/Ast/include/Luau/ParseOptions.h‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#pragma once
33

44
#include "Luau/Ast.h"
5-
#include "Luau/DenseHash.h"
5+
#include "Luau/DenseHash2.h"
66

77
#include <vector>
88

@@ -19,7 +19,7 @@ enum class Mode
1919

2020
struct FragmentParseResumeSettings
2121
{
22-
DenseHashMap<AstName, AstLocal*> localMap{AstName()};
22+
DenseHashMap2<AstName, AstLocal*> localMap;
2323
std::vector<AstLocal*> localStack;
2424
Position resumePosition;
2525
};

‎luau/Ast/include/Luau/ParseResult.h‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ struct Comment
5656
Location location;
5757
};
5858

59-
using CstNodeMap = DenseHashMap<AstNode*, CstNode*>;
59+
using CstNodeMap = DenseHashMap2<AstNode*, CstNode*>;
6060

6161
struct ParseResult
6262
{
@@ -68,7 +68,7 @@ struct ParseResult
6868

6969
std::vector<Comment> commentLocations;
7070

71-
CstNodeMap cstNodeMap{nullptr};
71+
CstNodeMap cstNodeMap;
7272
};
7373

7474
template<typename Node>
@@ -82,7 +82,7 @@ struct ParseNodeResult
8282

8383
std::vector<Comment> commentLocations;
8484

85-
CstNodeMap cstNodeMap{nullptr};
85+
CstNodeMap cstNodeMap;
8686
};
8787

8888
inline constexpr const char* kParseNameError = "%error-id%";

‎luau/Ast/include/Luau/Parser.h‎

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#include "Luau/Lexer.h"
66
#include "Luau/ParseOptions.h"
77
#include "Luau/ParseResult.h"
8-
#include "Luau/DenseHash.h"
8+
#include "Luau/DenseHash2.h"
99
#include "Luau/Common.h"
1010
#include "Luau/Cst.h"
1111

@@ -164,7 +164,6 @@ class Parser
164164
void parseAttrList(TempVector<AstAttr*>& attributes, TempVector<CstAttrList*>* cstAttrLists);
165165

166166
// attribute ::= '@' NAME | attrlist
167-
void parseAttribute_DEPRECATED(TempVector<AstAttr*>& attribute); // TODO: Clip with LuauCstAttr
168167
void parseAttribute(TempVector<AstAttr*>& attribute);
169168

170169
// attributes ::= {attribute}
@@ -192,7 +191,7 @@ class Parser
192191
// type Name `=' Type
193192
AstStat* parseTypeAlias(const Location& start, bool exported, Position typeKeywordPosition);
194193

195-
AstStat* parseClassStat(const Location& start, bool exported);
194+
AstStat* parseClassStat(const Location& start, bool exported, bool open);
196195

197196
// type function Name ... end
198197
AstStat* parseTypeFunction(const Location& start, bool exported, Position typeKeywordPosition);
@@ -364,6 +363,8 @@ class Parser
364363

365364
AstExpr* parseExplicitTypeInstantiationExpr(Position start, AstExpr& basedOnExpr);
366365

366+
AstExpr* parseClassRefExpr();
367+
367368
// Name
368369
std::optional<Name> parseNameOpt(const char* context = nullptr);
369370
Name parseName(const char* context = nullptr);
@@ -448,6 +449,8 @@ class Parser
448449
...
449450
) LUAU_PRINTF_ATTR(5, 6);
450451
AstExprError* reportExprError(const Location& location, const AstArray<AstExpr*>& expressions, const char* format, ...) LUAU_PRINTF_ATTR(4, 5);
452+
AstStatClass* getMatchingClass(AstExpr* expr);
453+
bool isExprLValue(AstExpr* expr);
451454
AstExprError* reportLValueError(AstExpr* expr);
452455
AstTypeError* reportTypeError(const Location& location, const AstArray<AstType*>& types, const char* format, ...) LUAU_PRINTF_ATTR(4, 5);
453456
// `parseErrorLocation` is associated with the parser error
@@ -540,15 +543,15 @@ class Parser
540543
std::vector<Function> functionStack;
541544
size_t typeFunctionDepth = 0;
542545

543-
DenseHashMap<AstName, AstLocal*> localMap;
546+
DenseHashMap2<AstName, AstLocal*> localMap;
544547
std::vector<AstLocal*> localStack;
545-
DenseHashSet<AstName> classesWithinModule{{}};
548+
DenseHashMap2<AstName, AstStatClass*> classesWithinModule;
546549

547550
std::vector<ParseError> parseErrors;
548551

549552
std::vector<unsigned int> matchRecoveryStopOnToken;
550553

551-
DenseHashMap<AstName, Location> declaredExportBindings;
554+
DenseHashMap2<AstName, Location> declaredExportBindings;
552555
bool hasModuleReturn = false;
553556

554557
std::vector<AstAttr*> scratchAttr;

‎luau/Ast/src/Ast.cpp‎

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -864,13 +864,7 @@ void AstStatFunction::visit(AstVisitor* visitor)
864864
}
865865
}
866866

867-
AstStatLocalFunction::AstStatLocalFunction(
868-
const Location& location,
869-
AstLocal* name,
870-
AstExprFunction* func,
871-
bool isConst,
872-
Position constKeywordBegin
873-
)
867+
AstStatLocalFunction::AstStatLocalFunction(const Location& location, AstLocal* name, AstExprFunction* func, bool isConst, Position constKeywordBegin)
874868
: AstStat(ClassIndex(), location)
875869
, name(name)
876870
, func(func)
@@ -985,11 +979,13 @@ AstStatDeclareFunction::AstStatDeclareFunction(
985979
{
986980
}
987981

988-
AstStatClass::AstStatClass(const Location& location, AstLocal* name, AstArray<AstClassMember> members, bool exported)
982+
AstStatClass::AstStatClass(const Location& location, AstLocal* name, AstExpr* super, AstArray<AstClassMember> members, bool exported, bool open)
989983
: AstStat(ClassIndex(), location)
990984
, name(name)
985+
, super(super)
991986
, members(members)
992987
, exported(exported)
988+
, open(open)
993989
{
994990
LUAU_ASSERT(FFlag::DebugLuauUserDefinedClasses);
995991
}
@@ -999,6 +995,9 @@ void AstStatClass::visit(AstVisitor* visitor)
999995
LUAU_ASSERT(FFlag::DebugLuauUserDefinedClasses);
1000996
if (visitor->visit(this))
1001997
{
998+
if (super)
999+
super->visit(visitor);
1000+
10021001
for (const auto& member : members)
10031002
{
10041003
Luau::visit(
@@ -1132,12 +1131,14 @@ AstTypeReference::AstTypeReference(
11321131
std::optional<Location> prefixLocation,
11331132
const Location& nameLocation,
11341133
bool hasParameterList,
1135-
const AstArray<AstTypeOrPack>& parameters
1134+
const AstArray<AstTypeOrPack>& parameters,
1135+
AstLocal* prefixLocal
11361136
)
11371137
: AstType(ClassIndex(), location)
11381138
, hasParameterList(hasParameterList)
11391139
, prefix(prefix)
11401140
, prefixLocation(prefixLocation)
1141+
, prefixLocal(prefixLocal)
11411142
, name(name)
11421143
, nameLocation(nameLocation)
11431144
, parameters(parameters)

‎luau/Ast/src/Cst.cpp‎

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
#include "Luau/Cst.h"
44
#include "Luau/Common.h"
55

6-
LUAU_FASTFLAG(LuauCstAttr)
7-
86
namespace Luau
97
{
108

@@ -14,7 +12,6 @@ CstAttr::CstAttr(bool hasAt)
1412
: CstNode(CstClassIndex())
1513
, hasAt(hasAt)
1614
{
17-
LUAU_ASSERT(FFlag::LuauCstAttr);
1815
}
1916

2017
CstParametrizedAttr::CstParametrizedAttr(Position openParenPosition, Position closeParenPosition, AstArray<Position> argsCommaPositions)
@@ -23,15 +20,13 @@ CstParametrizedAttr::CstParametrizedAttr(Position openParenPosition, Position cl
2320
, closeParenPosition(closeParenPosition)
2421
, argsCommaPositions(argsCommaPositions)
2522
{
26-
LUAU_ASSERT(FFlag::LuauCstAttr);
2723
}
2824

2925
CstAttrList::CstAttrList(Position atBracketPosition, Position closeBracketPosition, AstArray<Position> commaPositions)
3026
: atBracketPosition(atBracketPosition)
3127
, closeBracketPosition(closeBracketPosition)
3228
, commaPositions(commaPositions)
3329
{
34-
LUAU_ASSERT(FFlag::LuauCstAttr);
3530
}
3631

3732
CstExprGroup::CstExprGroup(Position closePosition)
@@ -198,7 +193,6 @@ CstStatFunction::CstStatFunction(AstArray<CstAttrList*> attrLists, Position func
198193
, attrLists(attrLists)
199194
, functionKeywordPosition(functionKeywordPosition)
200195
{
201-
LUAU_ASSERT(FFlag::LuauCstAttr);
202196
}
203197

204198
CstStatLocalFunction::CstStatLocalFunction(Position localKeywordPosition, Position functionKeywordPosition)
@@ -215,7 +209,6 @@ CstStatLocalFunction::CstStatLocalFunction(AstArray<CstAttrList*> attrLists, Pos
215209
, localKeywordPosition(localKeywordPosition)
216210
, functionKeywordPosition(functionKeywordPosition)
217211
{
218-
LUAU_ASSERT(FFlag::LuauCstAttr);
219212
}
220213

221214
CstGenericType::CstGenericType(Position defaultEqualsPosition)

‎luau/Ast/src/Lexer.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ size_t AstNameTable::EntryHash::operator()(const Entry& e) const
202202
}
203203

204204
AstNameTable::AstNameTable(Allocator& allocator)
205-
: data({AstName(""), 0, Lexeme::Eof}, 128)
205+
: data(128)
206206
, allocator(allocator)
207207
{
208208
static_assert(sizeof(kReserved) / sizeof(kReserved[0]) == Lexeme::Reserved_END - Lexeme::Reserved_BEGIN);

0 commit comments

Comments
 (0)