Merge branch 'master' of github.com:babel/babel
This commit is contained in:
@@ -226,7 +226,7 @@ pp.parseSubscripts = function(base, start, noCalls) {
|
||||
} else if (!noCalls && this.eat(tt.parenL)) {
|
||||
let node = this.startNodeAt(start)
|
||||
node.callee = base
|
||||
node.arguments = this.parseExprList(tt.parenR, false)
|
||||
node.arguments = this.parseExprList(tt.parenR, this.options.features["es7.trailingFunctionCommas"])
|
||||
return this.parseSubscripts(this.finishNode(node, "CallExpression"), start, noCalls)
|
||||
} else if (this.type === tt.backQuote) {
|
||||
let node = this.startNodeAt(start)
|
||||
|
||||
@@ -458,7 +458,7 @@ pp.parseFunction = function(node, isStatement, allowExpressionBody, isAsync) {
|
||||
|
||||
pp.parseFunctionParams = function(node) {
|
||||
this.expect(tt.parenL)
|
||||
node.params = this.parseBindingList(tt.parenR, false, false)
|
||||
node.params = this.parseBindingList(tt.parenR, false, this.options.features["es7.trailingFunctionCommas"])
|
||||
}
|
||||
|
||||
// Parse a class declaration or literal (depending on the
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
export var metadata = {
|
||||
stage: 1
|
||||
};
|
||||
|
||||
export function check() {
|
||||
return false;
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
export default {
|
||||
"es7.classProperties": require("./es7/class-properties"),
|
||||
"es7.trailingFunctionCommas": require("./es7/trailing-function-commas"),
|
||||
"es7.asyncFunctions": require("./es7/async-functions"),
|
||||
"es7.decorators": require("./es7/decorators"),
|
||||
|
||||
|
||||
@@ -3000,3 +3000,99 @@ test('export * as foo from "bar";', {
|
||||
sourceType: "module",
|
||||
features: { "es7.exportExtensions": true }
|
||||
});
|
||||
|
||||
// ES7: Trailing Function Commas
|
||||
|
||||
test("log(n, '=', 2,);", {
|
||||
type: "Program",
|
||||
start: 0,
|
||||
end: 16,
|
||||
body: [{
|
||||
type: "ExpressionStatement",
|
||||
start: 0,
|
||||
end: 16,
|
||||
expression: {
|
||||
type: "CallExpression",
|
||||
callee: {
|
||||
type: "Identifier",
|
||||
name: "log",
|
||||
start: 0,
|
||||
end: 3
|
||||
},
|
||||
arguments: [{
|
||||
type: "Identifier",
|
||||
name: "n",
|
||||
start: 4,
|
||||
end: 5
|
||||
}, {
|
||||
type: "Literal",
|
||||
value: "=",
|
||||
raw: "'='",
|
||||
start: 7,
|
||||
end: 10
|
||||
}, {
|
||||
type: "Literal",
|
||||
raw: "2",
|
||||
value: 2,
|
||||
start: 12,
|
||||
end: 13
|
||||
}]
|
||||
}
|
||||
}]
|
||||
}, {
|
||||
ecmaVersion: 7,
|
||||
features: { "es7.trailingFunctionCommas": true }
|
||||
});
|
||||
|
||||
test("function log(n, op, val,) { }", {
|
||||
type: "Program",
|
||||
start: 0,
|
||||
end: 29,
|
||||
body: [{
|
||||
type: "FunctionDeclaration",
|
||||
id: {
|
||||
type: "Identifier",
|
||||
name: "log",
|
||||
start: 9,
|
||||
end: 12
|
||||
},
|
||||
start: 0,
|
||||
end: 29,
|
||||
expression: false,
|
||||
params: [{
|
||||
type: "Identifier",
|
||||
name: "n",
|
||||
start: 13,
|
||||
end: 14
|
||||
}, {
|
||||
type: "Identifier",
|
||||
name: "op",
|
||||
start: 16,
|
||||
end: 18
|
||||
}, {
|
||||
type: "Identifier",
|
||||
name: "val",
|
||||
start: 20,
|
||||
end: 23
|
||||
}],
|
||||
body: {
|
||||
type: "BlockStatement",
|
||||
start: 26,
|
||||
end: 29,
|
||||
body: []
|
||||
}
|
||||
}]
|
||||
}, {
|
||||
ecmaVersion: 7,
|
||||
features: { "es7.trailingFunctionCommas": true }
|
||||
});
|
||||
|
||||
testFail("log(,);", "Unexpected token (1:4)", {
|
||||
ecmaVersion: 7,
|
||||
features: { "es7.trailingFunctionCommas": true }
|
||||
});
|
||||
|
||||
testFail("function log(,) { }", "Unexpected token (1:13)", {
|
||||
ecmaVersion: 7,
|
||||
features: { "es7.trailingFunctionCommas": true }
|
||||
});
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
Math.max(1,
|
||||
2,
|
||||
3,
|
||||
);
|
||||
@@ -0,0 +1,3 @@
|
||||
"use strict";
|
||||
|
||||
Math.max(1, 2, 3);
|
||||
@@ -0,0 +1,8 @@
|
||||
function thisIsAFunctionWithAVeryLongNameAndWayTooManyParameters(
|
||||
thisIsTheFirstParameter, andThisOneIsRelatedToIt,
|
||||
butNotThisOne,
|
||||
andNeitherThis,
|
||||
inFactThereArentThatManyParameters,
|
||||
) {
|
||||
throw null;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
function thisIsAFunctionWithAVeryLongNameAndWayTooManyParameters(thisIsTheFirstParameter, andThisOneIsRelatedToIt, butNotThisOne, andNeitherThis, inFactThereArentThatManyParameters) {
|
||||
throw null;
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"optional": ["es7.trailingFunctionCommas"]
|
||||
}
|
||||
Reference in New Issue
Block a user