Fix #931: Create arrow functions in maybe_assign so that they can be used in assignments
This commit is contained in:
21
lib/parse.js
21
lib/parse.js
@@ -1032,7 +1032,12 @@ function parse($TEXT, options) {
|
||||
var arrow_function = function(args) {
|
||||
expect_token("arrow", "=>");
|
||||
|
||||
var argnames = args.as_params(croak);
|
||||
var argnames;
|
||||
if (typeof args.length === 'number') {
|
||||
argnames = args;
|
||||
} else {
|
||||
argnames = args.as_params(croak);
|
||||
}
|
||||
|
||||
var body = is("punc", "{") ?
|
||||
_function_body(true) :
|
||||
@@ -1789,6 +1794,12 @@ function parse($TEXT, options) {
|
||||
var maybe_assign = function(no_in) {
|
||||
var start = S.token;
|
||||
|
||||
if (start.value == "(" && peek().value == ")") {
|
||||
next();
|
||||
next();
|
||||
return arrow_function([]);
|
||||
}
|
||||
|
||||
var left = maybe_conditional(no_in);
|
||||
var val = S.token.value;
|
||||
|
||||
@@ -1805,6 +1816,14 @@ function parse($TEXT, options) {
|
||||
}
|
||||
croak("Invalid assignment");
|
||||
}
|
||||
if (is("arrow")) {
|
||||
left = new AST_SymbolFunarg({
|
||||
name: left.name,
|
||||
start: left.start,
|
||||
end: left.end,
|
||||
});
|
||||
return arrow_function([left])
|
||||
}
|
||||
return left;
|
||||
};
|
||||
|
||||
|
||||
@@ -36,6 +36,17 @@ regression_arrow_functions_and_hoist: {
|
||||
expect_exact: "a=>b;"
|
||||
}
|
||||
|
||||
regression_assign_arrow_functions: {
|
||||
input: {
|
||||
oninstall = e => false;
|
||||
oninstall = () => false;
|
||||
}
|
||||
expect: {
|
||||
oninstall=e=>false;
|
||||
oninstall=()=>false;
|
||||
}
|
||||
}
|
||||
|
||||
computed_property_names: {
|
||||
input: {
|
||||
obj({ ["x" + "x"]: 6 });
|
||||
|
||||
Reference in New Issue
Block a user