OLD | NEW |
| (Empty) |
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 // In strong mode, direct calls to eval are forbidden | |
8 | |
9 assertThrows("'use strong'; eval();", SyntaxError); | |
10 assertThrows("'use strong'; (eval)();", SyntaxError); | |
11 assertThrows("'use strong'; (((eval)))();", SyntaxError); | |
12 assertThrows("'use strong'; eval([]);", SyntaxError); | |
13 assertThrows("'use strong'; eval('function f() {}');", SyntaxError); | |
14 assertThrows("'use strong'; function f() {eval()}", SyntaxError); | |
15 | |
16 assertDoesNotThrow("'use strong'; eval;"); | |
17 assertDoesNotThrow("'use strong'; let foo = eval; foo();"); | |
18 assertDoesNotThrow("'use strong'; (1, eval)();"); | |
19 | |
20 // TODO(neis): The tagged template triggers %ObjectFreeze on an array, which | |
21 // throws when trying to redefine 'length'. | |
22 // assertDoesNotThrow("'use strong'; eval`foo`;"); | |
OLD | NEW |