Index: lib/src/js/builder.dart |
diff --git a/lib/src/js/builder.dart b/lib/src/js/builder.dart |
index 5037a3f0ef142003125f4e83838acf2d5f2f8dba..f868e67a9f10175e7d762e1c7159891c20a1fc0e 100644 |
--- a/lib/src/js/builder.dart |
+++ b/lib/src/js/builder.dart |
@@ -840,7 +840,7 @@ class MiniJsParser { |
return parseArrowFunctionBody(<Parameter>[]); |
} |
if (acceptCategory(ELLIPSIS)) { |
- var params = <Parameter>[new RestParameter(parseParameter())]; |
+ var params = <Parameter>[parseParameter(isRest: true)]; |
expectCategory(RPAREN); |
expectCategory(ARROW); |
return parseArrowFunctionBody(params); |
@@ -850,7 +850,7 @@ class MiniJsParser { |
if (acceptCategory(ELLIPSIS)) { |
var params = <Parameter>[]; |
_expressionToParameterList(expression, params); |
- params.add(new RestParameter(parseParameter())); |
+ params.add(parseParameter(isRest: true)); |
expectCategory(RPAREN); |
expectCategory(ARROW); |
return parseArrowFunctionBody(params); |
@@ -873,7 +873,7 @@ class MiniJsParser { |
*/ |
void _expressionToParameterList(Expression node, List<Parameter> params) { |
if (node is Identifier) { |
- params.add(node); |
+ params.add(new Parameter(node)); |
} else if (node is Binary && node.op == ',') { |
// TODO(jmesserly): this will allow illegal parens, such as |
// `((a, b), (c, d))`. Fixing it on the left side needs an explicit |
@@ -915,7 +915,7 @@ class MiniJsParser { |
if (!acceptCategory(RPAREN)) { |
for (;;) { |
if (acceptCategory(ELLIPSIS)) { |
- params.add(new RestParameter(parseParameter())); |
+ params.add(parseParameter(isRest: true)); |
expectCategory(RPAREN); |
break; |
} |
@@ -946,17 +946,17 @@ class MiniJsParser { |
} |
/** Parse parameter name or interpolated parameter. */ |
- Identifier parseParameter() { |
+ Parameter parseParameter({bool isRest: false}) { |
if (acceptCategory(HASH)) { |
var nameOrPosition = parseHash(); |
- var parameter = new InterpolatedParameter(nameOrPosition); |
+ var parameter = new InterpolatedParameter(nameOrPosition, isRest: isRest); |
interpolatedValues.add(parameter); |
return parameter; |
} else { |
// TODO(jmesserly): validate this is not a keyword |
String argumentName = lastToken; |
expectCategory(ALPHA); |
- return new Identifier(argumentName); |
+ return new Parameter(new Identifier(argumentName), isRest: isRest); |
} |
} |