4869ac6dfaef35befff01bac577b6bb57576936e
[platform/upstream/nodejs.git] / deps / v8 / test / mjsunit / strong / functions.js
1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Flags: --strong-mode
6
7 'use strong';
8
9 (function NoArguments() {
10   assertThrows("'use strong'; arguments", SyntaxError);
11   assertThrows("'use strong'; function f() { arguments }", SyntaxError);
12   assertThrows("'use strong'; let f = function() { arguments }", SyntaxError);
13   assertThrows("'use strong'; let f = () => arguments", SyntaxError);
14   // The following are strict mode errors already.
15   assertThrows("'use strong'; let arguments", SyntaxError);
16   assertThrows("'use strong'; function f(arguments) {}", SyntaxError);
17   assertThrows("'use strong'; let f = (arguments) => {}", SyntaxError);
18 })();
19
20 function g() {}
21
22 (function LexicalFunctionBindings(global) {
23   assertEquals('function', typeof g);
24   assertEquals(undefined, global.g);
25 })(this);
26
27 (function ImmutableFunctionBindings() {
28   function f() {}
29   assertThrows(function(){ eval("g = 0") }, TypeError);
30   assertThrows(function(){ eval("f = 0") }, TypeError);
31   assertEquals('function', typeof g);
32   assertEquals('function', typeof f);
33 })();