4e2c0dd7a9
- Add JSReceiver::SetIntegrityLevel, with a fast path for regular objects. - Make Object.{freeze,seal} call this via %Object{Freeze,Seal}, thus no longer using broken or deprecated functions from v8natives.js. - Add JSReceiver::OwnPropertyKeys convenience function. - Reenable harmony/proxies-hash.js test. R=rossberg BUG=v8:1543 LOG=N Review URL: https://codereview.chromium.org/1489423002 Cr-Commit-Position: refs/heads/master@{#32651}
23 lines
928 B
JavaScript
23 lines
928 B
JavaScript
// Copyright 2015 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: --strong-mode
|
|
|
|
// In strong mode, direct calls to eval are forbidden
|
|
|
|
assertThrows("'use strong'; eval();", SyntaxError);
|
|
assertThrows("'use strong'; (eval)();", SyntaxError);
|
|
assertThrows("'use strong'; (((eval)))();", SyntaxError);
|
|
assertThrows("'use strong'; eval([]);", SyntaxError);
|
|
assertThrows("'use strong'; eval('function f() {}');", SyntaxError);
|
|
assertThrows("'use strong'; function f() {eval()}", SyntaxError);
|
|
|
|
assertDoesNotThrow("'use strong'; eval;");
|
|
assertDoesNotThrow("'use strong'; let foo = eval; foo();");
|
|
assertDoesNotThrow("'use strong'; (1, eval)();");
|
|
|
|
// TODO(neis): The tagged template triggers %ObjectFreeze on an array, which
|
|
// throws when trying to redefine 'length'.
|
|
// assertDoesNotThrow("'use strong'; eval`foo`;");
|