Home | History | Annotate | Download | only in strong
      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`;");
     23