diff options
Diffstat (limited to 'deps/v8/test/mjsunit/regress/regress-8630.js')
-rw-r--r-- | deps/v8/test/mjsunit/regress/regress-8630.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/regress/regress-8630.js b/deps/v8/test/mjsunit/regress/regress-8630.js new file mode 100644 index 0000000000..f51807b4a5 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-8630.js @@ -0,0 +1,32 @@ +// Copyright 2019 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax + +// Parameters can't have parentheses (both patterns and identifiers) +assertThrows("( ({x: 1}) ) => {};", SyntaxError); +assertThrows("( (x) ) => {}", SyntaxError); +assertThrows("( ({x: 1}) = y ) => {}", SyntaxError); +assertThrows("( (x) = y ) => {}", SyntaxError); + +// Declarations can't have parentheses (both patterns and identifiers) +assertThrows("let [({x: 1})] = [];", SyntaxError); +assertThrows("let [(x)] = [];", SyntaxError); +assertThrows("let [({x: 1}) = y] = [];", SyntaxError); +assertThrows("let [(x) = y] = [];", SyntaxError); +assertThrows("var [({x: 1})] = [];", SyntaxError); +assertThrows("var [(x)] = [];", SyntaxError); +assertThrows("var [({x: 1}) = y] = [];", SyntaxError); +assertThrows("var [(x) = y] = [];", SyntaxError); + +// Patterns in can't have parentheses in assignments either +assertThrows("[({x: 1}) = y] = [];", SyntaxError); + +// Parentheses are fine around identifiers in assignments though, even inside a +// pattern +var x; +[(x)] = [2]; +assertEquals(x, 2); +[(x) = 3] = []; +assertEquals(x, 3); |