Skip to content

Commit

Permalink
[[FIX]] Allow "rest" operator in param dstrctrng
Browse files Browse the repository at this point in the history
Previously, in the context of function parameter lists, JSHint only
allowed the "rest" operator to be applied to identifiers. Extend support
to destructuring patterns and update the Test262 "expectations" file
accordingly.
  • Loading branch information
jugglinmike committed Jun 14, 2020
1 parent cd3fda0 commit b6a1c2e
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 19 deletions.
3 changes: 2 additions & 1 deletion src/jshint.js
Expand Up @@ -3522,6 +3522,8 @@ var JSHINT = (function() {
// are added to the param scope
var currentParams = [];

pastRest = spreadrest("rest");

if (_.includes(["{", "["], state.tokens.next.id)) {
hasDestructuring = true;
tokens = destructuringPattern(context);
Expand All @@ -3533,7 +3535,6 @@ var JSHINT = (function() {
}
}
} else {
pastRest = spreadrest("rest");
ident = identifier(context);

if (ident) {
Expand Down
18 changes: 0 additions & 18 deletions tests/test262/expectations.txt
Expand Up @@ -143,10 +143,6 @@ test/language/identifiers/vals-rus-alpha-lower-via-escape-hex.js(default)
test/language/identifiers/vals-rus-alpha-lower-via-escape-hex.js(strict mode)
test/language/identifiers/vals-rus-alpha-upper-via-escape-hex.js(default)
test/language/identifiers/vals-rus-alpha-upper-via-escape-hex.js(strict mode)
test/language/rest-parameters/array-pattern.js(default)
test/language/rest-parameters/array-pattern.js(strict mode)
test/language/rest-parameters/object-pattern.js(default)
test/language/rest-parameters/object-pattern.js(strict mode)
test/language/arguments-object/10.6-13-c-1-s.js(strict mode)
test/language/arguments-object/10.6-1gs.js(strict mode)
test/language/arguments-object/10.6-2gs.js(strict mode)
Expand Down Expand Up @@ -199,21 +195,13 @@ test/language/expressions/template-literal/invalid-hexidecimal-character-escape-
test/language/expressions/template-literal/invalid-legacy-octal-escape-sequence.js(default)
test/language/expressions/template-literal/tv-utf16-escape-sequence.js(default)
test/language/expressions/template-literal/tv-utf16-escape-sequence.js(strict mode)
test/language/expressions/function/scope-param-rest-elem-var-close.js(default)
test/language/expressions/function/scope-param-rest-elem-var-open.js(default)
test/language/expressions/generators/scope-param-rest-elem-var-close.js(default)
test/language/expressions/generators/scope-param-rest-elem-var-open.js(default)
test/language/expressions/generators/yield-as-function-expression-binding-identifier.js(default)
test/language/expressions/generators/yield-as-logical-or-expression.js(default)
test/language/expressions/generators/yield-as-logical-or-expression.js(strict mode)
test/language/expressions/generators/yield-star-after-newline.js(default)
test/language/expressions/generators/yield-star-after-newline.js(strict mode)
test/language/expressions/class/getter-param-dflt.js(default)
test/language/expressions/class/getter-param-dflt.js(strict mode)
test/language/expressions/object/scope-gen-meth-param-rest-elem-var-close.js(default)
test/language/expressions/object/scope-gen-meth-param-rest-elem-var-open.js(default)
test/language/expressions/object/scope-meth-param-rest-elem-var-close.js(default)
test/language/expressions/object/scope-meth-param-rest-elem-var-open.js(default)
test/language/expressions/object/method-definition/yield-as-expression-with-rhs.js(default)
test/language/expressions/object/method-definition/yield-as-expression-with-rhs.js(strict mode)
test/language/expressions/object/method-definition/yield-as-expression-without-rhs.js(default)
Expand All @@ -223,8 +211,6 @@ test/language/expressions/object/method-definition/yield-as-logical-or-expressio
test/language/expressions/object/method-definition/yield-as-logical-or-expression.js(strict mode)
test/language/expressions/object/method-definition/yield-star-after-newline.js(default)
test/language/expressions/object/method-definition/yield-star-after-newline.js(strict mode)
test/language/expressions/arrow-function/scope-param-rest-elem-var-close.js(default)
test/language/expressions/arrow-function/scope-param-rest-elem-var-open.js(default)
test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid-parenless-parameters-expression-body.js(default)
test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid-parenless-parameters-expression-body.js(strict mode)
test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid-parenless-parameters.js(default)
Expand Down Expand Up @@ -265,8 +251,6 @@ test/language/statements/if/if-stmt-else-decl-strict.js(strict mode)
test/language/statements/if/if-stmt-else-fun-strict.js(strict mode)
test/language/statements/if/if-stmt-else-gen.js(default)
test/language/statements/if/if-stmt-else-gen.js(strict mode)
test/language/statements/generators/scope-param-rest-elem-var-close.js(default)
test/language/statements/generators/scope-param-rest-elem-var-open.js(default)
test/language/statements/generators/yield-as-function-expression-binding-identifier.js(default)
test/language/statements/generators/yield-as-logical-or-expression.js(default)
test/language/statements/generators/yield-as-logical-or-expression.js(strict mode)
Expand All @@ -283,8 +267,6 @@ test/language/statements/labeled/decl-gen.js(default)
test/language/statements/labeled/decl-gen.js(strict mode)
test/language/statements/labeled/decl-let.js(default)
test/language/statements/labeled/decl-let.js(strict mode)
test/language/statements/function/scope-param-rest-elem-var-close.js(default)
test/language/statements/function/scope-param-rest-elem-var-open.js(default)
test/language/statements/return/S12.9_A1_T1.js(default)
test/language/statements/return/S12.9_A1_T1.js(strict mode)
test/language/statements/return/S12.9_A1_T10.js(default)
Expand Down

0 comments on commit b6a1c2e

Please sign in to comment.