Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[[FIX]] Allow "rest" operator in param dstrctrng
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 authored and rwaldron committed Jun 16, 2020
1 parent 370e159 commit c45d1b2
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 @@ -191,21 +187,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 @@ -215,8 +203,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 @@ -257,8 +243,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 @@ -275,8 +259,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 c45d1b2

Please sign in to comment.