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) {
|
var arrow_function = function(args) {
|
||||||
expect_token("arrow", "=>");
|
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", "{") ?
|
var body = is("punc", "{") ?
|
||||||
_function_body(true) :
|
_function_body(true) :
|
||||||
@@ -1789,6 +1794,12 @@ function parse($TEXT, options) {
|
|||||||
var maybe_assign = function(no_in) {
|
var maybe_assign = function(no_in) {
|
||||||
var start = S.token;
|
var start = S.token;
|
||||||
|
|
||||||
|
if (start.value == "(" && peek().value == ")") {
|
||||||
|
next();
|
||||||
|
next();
|
||||||
|
return arrow_function([]);
|
||||||
|
}
|
||||||
|
|
||||||
var left = maybe_conditional(no_in);
|
var left = maybe_conditional(no_in);
|
||||||
var val = S.token.value;
|
var val = S.token.value;
|
||||||
|
|
||||||
@@ -1805,6 +1816,14 @@ function parse($TEXT, options) {
|
|||||||
}
|
}
|
||||||
croak("Invalid assignment");
|
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;
|
return left;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,17 @@ regression_arrow_functions_and_hoist: {
|
|||||||
expect_exact: "a=>b;"
|
expect_exact: "a=>b;"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
regression_assign_arrow_functions: {
|
||||||
|
input: {
|
||||||
|
oninstall = e => false;
|
||||||
|
oninstall = () => false;
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
oninstall=e=>false;
|
||||||
|
oninstall=()=>false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
computed_property_names: {
|
computed_property_names: {
|
||||||
input: {
|
input: {
|
||||||
obj({ ["x" + "x"]: 6 });
|
obj({ ["x" + "x"]: 6 });
|
||||||
|
|||||||
Reference in New Issue
Block a user