mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 06:37:43 +00:00
LibJS: Move checks for invalid getter/setter params to parse_function_node
This allows us to provide better error messages as we can point the syntax error location to the exact first invalid parameter instead of always the end of the function within a object literal or class definition. Before this change: const Foo = { set bar() {} } ^ Uncaught exception: [SyntaxError]: Object setter property must have one argument (line: 1, column: 28) class Foo { set bar() {} } ^ Uncaught exception: [SyntaxError]: Class setter method must have one argument (line: 1, column: 26) After this change: const Foo = { set bar() {} } ^ Uncaught exception: [SyntaxError]: Setter function must have one argument (line: 1, column: 23) class Foo { set bar() {} } ^ Uncaught exception: [SyntaxError]: Setter function must have one argument (line: 1, column: 21) The only possible downside of this change is that class getters/setters and functions in objects are not distinguished in the message anymore - I don't think that's important though, and classes are (mostly) just syntactic sugar anyway.
This commit is contained in:
parent
db75be1119
commit
6331d45a6f
2 changed files with 23 additions and 31 deletions
|
@ -45,6 +45,8 @@ struct FunctionNodeParseOptions {
|
|||
CheckForFunctionAndName = 1 << 0,
|
||||
AllowSuperPropertyLookup = 1 << 1,
|
||||
AllowSuperConstructorCall = 1 << 2,
|
||||
IsGetterFunction = 1 << 3,
|
||||
IsSetterFunction = 1 << 4,
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -56,7 +58,7 @@ public:
|
|||
|
||||
template<typename FunctionNodeType>
|
||||
NonnullRefPtr<FunctionNodeType> parse_function_node(u8 parse_options = FunctionNodeParseOptions::CheckForFunctionAndName);
|
||||
Vector<FunctionNode::Parameter> parse_function_parameters(int& function_length);
|
||||
Vector<FunctionNode::Parameter> parse_function_parameters(int& function_length, u8 parse_options = 0);
|
||||
|
||||
NonnullRefPtr<Statement> parse_statement();
|
||||
NonnullRefPtr<BlockStatement> parse_block_statement();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue