Skip to content

Commit

Permalink
v0.10.3+luau640
Browse files Browse the repository at this point in the history
  • Loading branch information
khvzak committed Aug 25, 2024
1 parent acb3869 commit ad37e62
Show file tree
Hide file tree
Showing 76 changed files with 1,799 additions and 885 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "luau0-src"
version = "0.10.2+luau635"
version = "0.10.3+luau640"
authors = ["Aleksandr Orlenko <[email protected]>"]
edition = "2021"
repository = "https://github.com/khvzak/luau-src-rs"
Expand Down
175 changes: 141 additions & 34 deletions luau/Ast/include/Luau/Ast.h
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,13 @@ class AstExprIndexName : public AstExpr
LUAU_RTTI(AstExprIndexName)

AstExprIndexName(
const Location& location, AstExpr* expr, const AstName& index, const Location& indexLocation, const Position& opPosition, char op);
const Location& location,
AstExpr* expr,
const AstName& index,
const Location& indexLocation,
const Position& opPosition,
char op
);

void visit(AstVisitor* visitor) override;

Expand Down Expand Up @@ -413,11 +419,22 @@ class AstExprFunction : public AstExpr
public:
LUAU_RTTI(AstExprFunction)

AstExprFunction(const Location& location, const AstArray<AstAttr*>& attributes, const AstArray<AstGenericType>& generics,
const AstArray<AstGenericTypePack>& genericPacks, AstLocal* self, const AstArray<AstLocal*>& args, bool vararg,
const Location& varargLocation, AstStatBlock* body, size_t functionDepth, const AstName& debugname,
const std::optional<AstTypeList>& returnAnnotation = {}, AstTypePack* varargAnnotation = nullptr,
const std::optional<Location>& argLocation = std::nullopt);
AstExprFunction(
const Location& location,
const AstArray<AstAttr*>& attributes,
const AstArray<AstGenericType>& generics,
const AstArray<AstGenericTypePack>& genericPacks,
AstLocal* self,
const AstArray<AstLocal*>& args,
bool vararg,
const Location& varargLocation,
AstStatBlock* body,
size_t functionDepth,
const AstName& debugname,
const std::optional<AstTypeList>& returnAnnotation = {},
AstTypePack* varargAnnotation = nullptr,
const std::optional<Location>& argLocation = std::nullopt
);

void visit(AstVisitor* visitor) override;

Expand Down Expand Up @@ -603,8 +620,14 @@ class AstStatIf : public AstStat
public:
LUAU_RTTI(AstStatIf)

AstStatIf(const Location& location, AstExpr* condition, AstStatBlock* thenbody, AstStat* elsebody, const std::optional<Location>& thenLocation,
const std::optional<Location>& elseLocation);
AstStatIf(
const Location& location,
AstExpr* condition,
AstStatBlock* thenbody,
AstStat* elsebody,
const std::optional<Location>& thenLocation,
const std::optional<Location>& elseLocation
);

void visit(AstVisitor* visitor) override;

Expand Down Expand Up @@ -698,8 +721,12 @@ class AstStatLocal : public AstStat
public:
LUAU_RTTI(AstStatLocal)

AstStatLocal(const Location& location, const AstArray<AstLocal*>& vars, const AstArray<AstExpr*>& values,
const std::optional<Location>& equalsSignLocation);
AstStatLocal(
const Location& location,
const AstArray<AstLocal*>& vars,
const AstArray<AstExpr*>& values,
const std::optional<Location>& equalsSignLocation
);

void visit(AstVisitor* visitor) override;

Expand All @@ -714,8 +741,16 @@ class AstStatFor : public AstStat
public:
LUAU_RTTI(AstStatFor)

AstStatFor(const Location& location, AstLocal* var, AstExpr* from, AstExpr* to, AstExpr* step, AstStatBlock* body, bool hasDo,
const Location& doLocation);
AstStatFor(
const Location& location,
AstLocal* var,
AstExpr* from,
AstExpr* to,
AstExpr* step,
AstStatBlock* body,
bool hasDo,
const Location& doLocation
);

void visit(AstVisitor* visitor) override;

Expand All @@ -734,8 +769,16 @@ class AstStatForIn : public AstStat
public:
LUAU_RTTI(AstStatForIn)

AstStatForIn(const Location& location, const AstArray<AstLocal*>& vars, const AstArray<AstExpr*>& values, AstStatBlock* body, bool hasIn,
const Location& inLocation, bool hasDo, const Location& doLocation);
AstStatForIn(
const Location& location,
const AstArray<AstLocal*>& vars,
const AstArray<AstExpr*>& values,
AstStatBlock* body,
bool hasIn,
const Location& inLocation,
bool hasDo,
const Location& doLocation
);

void visit(AstVisitor* visitor) override;

Expand Down Expand Up @@ -808,8 +851,15 @@ class AstStatTypeAlias : public AstStat
public:
LUAU_RTTI(AstStatTypeAlias)

AstStatTypeAlias(const Location& location, const AstName& name, const Location& nameLocation, const AstArray<AstGenericType>& generics,
const AstArray<AstGenericTypePack>& genericPacks, AstType* type, bool exported);
AstStatTypeAlias(
const Location& location,
const AstName& name,
const Location& nameLocation,
const AstArray<AstGenericType>& generics,
const AstArray<AstGenericTypePack>& genericPacks,
AstType* type,
bool exported
);

void visit(AstVisitor* visitor) override;

Expand All @@ -821,6 +871,20 @@ class AstStatTypeAlias : public AstStat
bool exported;
};

class AstStatTypeFunction : public AstStat
{
public:
LUAU_RTTI(AstStatTypeFunction);

AstStatTypeFunction(const Location& location, const AstName& name, const Location& nameLocation, AstExprFunction* body);

void visit(AstVisitor* visitor) override;

AstName name;
Location nameLocation;
AstExprFunction* body;
};

class AstStatDeclareGlobal : public AstStat
{
public:
Expand All @@ -840,13 +904,32 @@ class AstStatDeclareFunction : public AstStat
public:
LUAU_RTTI(AstStatDeclareFunction)

AstStatDeclareFunction(const Location& location, const AstName& name, const Location& nameLocation, const AstArray<AstGenericType>& generics,
const AstArray<AstGenericTypePack>& genericPacks, const AstTypeList& params, const AstArray<AstArgumentName>& paramNames, bool vararg,
const Location& varargLocation, const AstTypeList& retTypes);

AstStatDeclareFunction(const Location& location, const AstArray<AstAttr*>& attributes, const AstName& name, const Location& nameLocation,
const AstArray<AstGenericType>& generics, const AstArray<AstGenericTypePack>& genericPacks, const AstTypeList& params,
const AstArray<AstArgumentName>& paramNames, bool vararg, const Location& varargLocation, const AstTypeList& retTypes);
AstStatDeclareFunction(
const Location& location,
const AstName& name,
const Location& nameLocation,
const AstArray<AstGenericType>& generics,
const AstArray<AstGenericTypePack>& genericPacks,
const AstTypeList& params,
const AstArray<AstArgumentName>& paramNames,
bool vararg,
const Location& varargLocation,
const AstTypeList& retTypes
);

AstStatDeclareFunction(
const Location& location,
const AstArray<AstAttr*>& attributes,
const AstName& name,
const Location& nameLocation,
const AstArray<AstGenericType>& generics,
const AstArray<AstGenericTypePack>& genericPacks,
const AstTypeList& params,
const AstArray<AstArgumentName>& paramNames,
bool vararg,
const Location& varargLocation,
const AstTypeList& retTypes
);


void visit(AstVisitor* visitor) override;
Expand Down Expand Up @@ -896,8 +979,13 @@ class AstStatDeclareClass : public AstStat
public:
LUAU_RTTI(AstStatDeclareClass)

AstStatDeclareClass(const Location& location, const AstName& name, std::optional<AstName> superName, const AstArray<AstDeclaredClassProp>& props,
AstTableIndexer* indexer = nullptr);
AstStatDeclareClass(
const Location& location,
const AstName& name,
std::optional<AstName> superName,
const AstArray<AstDeclaredClassProp>& props,
AstTableIndexer* indexer = nullptr
);

void visit(AstVisitor* visitor) override;

Expand Down Expand Up @@ -934,8 +1022,15 @@ class AstTypeReference : public AstType
public:
LUAU_RTTI(AstTypeReference)

AstTypeReference(const Location& location, std::optional<AstName> prefix, AstName name, std::optional<Location> prefixLocation,
const Location& nameLocation, bool hasParameterList = false, const AstArray<AstTypeOrPack>& parameters = {});
AstTypeReference(
const Location& location,
std::optional<AstName> prefix,
AstName name,
std::optional<Location> prefixLocation,
const Location& nameLocation,
bool hasParameterList = false,
const AstArray<AstTypeOrPack>& parameters = {}
);

void visit(AstVisitor* visitor) override;

Expand Down Expand Up @@ -974,12 +1069,24 @@ class AstTypeFunction : public AstType
public:
LUAU_RTTI(AstTypeFunction)

AstTypeFunction(const Location& location, const AstArray<AstGenericType>& generics, const AstArray<AstGenericTypePack>& genericPacks,
const AstTypeList& argTypes, const AstArray<std::optional<AstArgumentName>>& argNames, const AstTypeList& returnTypes);

AstTypeFunction(const Location& location, const AstArray<AstAttr*>& attributes, const AstArray<AstGenericType>& generics,
const AstArray<AstGenericTypePack>& genericPacks, const AstTypeList& argTypes, const AstArray<std::optional<AstArgumentName>>& argNames,
const AstTypeList& returnTypes);
AstTypeFunction(
const Location& location,
const AstArray<AstGenericType>& generics,
const AstArray<AstGenericTypePack>& genericPacks,
const AstTypeList& argTypes,
const AstArray<std::optional<AstArgumentName>>& argNames,
const AstTypeList& returnTypes
);

AstTypeFunction(
const Location& location,
const AstArray<AstAttr*>& attributes,
const AstArray<AstGenericType>& generics,
const AstArray<AstGenericTypePack>& genericPacks,
const AstTypeList& argTypes,
const AstArray<std::optional<AstArgumentName>>& argNames,
const AstTypeList& returnTypes
);

void visit(AstVisitor* visitor) override;

Expand Down Expand Up @@ -1413,4 +1520,4 @@ struct hash<Luau::AstName>
}
};

} // namespace std
} // namespace std
40 changes: 32 additions & 8 deletions luau/Ast/include/Luau/Parser.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,12 @@ class Parser
{
public:
static ParseResult parse(
const char* buffer, std::size_t bufferSize, AstNameTable& names, Allocator& allocator, ParseOptions options = ParseOptions());
const char* buffer,
std::size_t bufferSize,
AstNameTable& names,
Allocator& allocator,
ParseOptions options = ParseOptions()
);

private:
struct Name;
Expand Down Expand Up @@ -140,6 +145,9 @@ class Parser
// type Name `=' Type
AstStat* parseTypeAlias(const Location& start, bool exported);

// type function Name ... end
AstStat* parseTypeFunction(const Location& start);

AstDeclaredClassProp parseDeclaredClassMethod();

// `declare global' Name: Type |
Expand All @@ -157,7 +165,12 @@ class Parser
// funcbodyhead ::= `(' [namelist [`,' `...'] | `...'] `)' [`:` Type]
// funcbody ::= funcbodyhead block end
std::pair<AstExprFunction*, AstLocal*> parseFunctionBody(
bool hasself, const Lexeme& matchFunction, const AstName& debugname, const Name* localName, const AstArray<AstAttr*>& attributes);
bool hasself,
const Lexeme& matchFunction,
const AstName& debugname,
const Name* localName,
const AstArray<AstAttr*>& attributes
);

// explist ::= {exp `,'} exp
void parseExprList(TempVector<AstExpr*>& result);
Expand Down Expand Up @@ -191,9 +204,15 @@ class Parser
AstTableIndexer* parseTableIndexer(AstTableAccess access, std::optional<Location> accessLocation);

AstTypeOrPack parseFunctionType(bool allowPack, const AstArray<AstAttr*>& attributes);
AstType* parseFunctionTypeTail(const Lexeme& begin, const AstArray<AstAttr*>& attributes, AstArray<AstGenericType> generics,
AstArray<AstGenericTypePack> genericPacks, AstArray<AstType*> params, AstArray<std::optional<AstArgumentName>> paramNames,
AstTypePack* varargAnnotation);
AstType* parseFunctionTypeTail(
const Lexeme& begin,
const AstArray<AstAttr*>& attributes,
AstArray<AstGenericType> generics,
AstArray<AstGenericTypePack> genericPacks,
AstArray<AstType*> params,
AstArray<std::optional<AstArgumentName>> paramNames,
AstTypePack* varargAnnotation
);

AstType* parseTableType(bool inDeclarationContext = false);
AstTypeOrPack parseSimpleType(bool allowPack, bool inDeclarationContext = false);
Expand Down Expand Up @@ -315,8 +334,13 @@ class Parser

void reportNameError(const char* context);

AstStatError* reportStatError(const Location& location, const AstArray<AstExpr*>& expressions, const AstArray<AstStat*>& statements,
const char* format, ...) LUAU_PRINTF_ATTR(5, 6);
AstStatError* reportStatError(
const Location& location,
const AstArray<AstExpr*>& expressions,
const AstArray<AstStat*>& statements,
const char* format,
...
) LUAU_PRINTF_ATTR(5, 6);
AstExprError* reportExprError(const Location& location, const AstArray<AstExpr*>& expressions, const char* format, ...) LUAU_PRINTF_ATTR(4, 5);
AstTypeError* reportTypeError(const Location& location, const AstArray<AstType*>& types, const char* format, ...) LUAU_PRINTF_ATTR(4, 5);
// `parseErrorLocation` is associated with the parser error
Expand Down Expand Up @@ -428,4 +452,4 @@ class Parser
std::string scratchData;
};

} // namespace Luau
} // namespace Luau
Loading

0 comments on commit ad37e62

Please sign in to comment.