Skip to content

Commit

Permalink
[[FIX]] Disallow default values in rest parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
jugglinmike authored and rwaldron committed Jan 9, 2018
1 parent 8896fa3 commit b420aed
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 16 deletions.
5 changes: 5 additions & 0 deletions src/jshint.js
Original file line number Diff line number Diff line change
Expand Up @@ -2834,6 +2834,11 @@ var JSHINT = (function() {
if (!state.inES6()) {
warning("W119", state.tokens.next, "default parameters", "6");
}

if (pastRest) {
error("E062", state.tokens.next);
}

advance("=");
pastDefault = true;
expression(10);
Expand Down
3 changes: 2 additions & 1 deletion src/messages.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,8 @@ var errors = {
E058: "Missing semicolon.",
E059: "Incompatible values for the '{a}' and '{b}' linting options.",
E060: "Non-callable values cannot be used as the second operand to instanceof.",
E061: "Invalid position for 'yield' expression (consider wrapping in parenthesis)."
E061: "Invalid position for 'yield' expression (consider wrapping in parenthesis).",
E062: "Rest parameter does not a support default value."
};

var warnings = {
Expand Down
15 changes: 0 additions & 15 deletions tests/test262/expectations.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1147,24 +1147,9 @@ language/statements/class/syntax/early-errors/class-body-static-method-set-conta


# Rest parameters
language/expressions/function/dflt-params-rest.js
language/expressions/generators/dflt-params-rest.js
language/expressions/class/gen-meth-dflt-params-rest.js
language/expressions/class/gen-meth-static-dflt-params-rest.js
language/expressions/class/meth-dflt-params-rest.js
language/expressions/class/meth-static-dflt-params-rest.js
language/expressions/assignment/dstr-obj-rest-not-last-element-invalid.js
language/expressions/object/method-definition/gen-meth-dflt-params-rest.js
language/expressions/object/method-definition/meth-dflt-params-rest.js
language/expressions/arrow-function/dflt-params-rest.js
language/statements/for-of/dstr-obj-rest-not-last-element-invalid.js
language/statements/generators/dflt-params-rest.js
language/statements/function/dflt-params-rest.js
language/statements/for-in/dstr-obj-rest-not-last-element-invalid.js
language/statements/class/gen-meth-dflt-params-rest.js
language/statements/class/gen-meth-static-dflt-params-rest.js
language/statements/class/meth-dflt-params-rest.js
language/statements/class/meth-static-dflt-params-rest.js

# Spread operator
language/expressions/array/spread-err-mult-err-obj-getter-throws.js
Expand Down
9 changes: 9 additions & 0 deletions tests/unit/parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -7679,6 +7679,15 @@ exports.commaAfterRestParameter = function (test) {
};


exports.restParameterWithDefault = function (test) {
TestRun(test)
.addError(1, 17, "Rest parameter does not a support default value.")
.test("function f(...x = 0) {}", { esversion: 6 });

test.done();
};


exports.extraRestOperator = function (test) {
TestRun(test)
.addError(1, 23, "Unexpected '...'.")
Expand Down

0 comments on commit b420aed

Please sign in to comment.