test/script/basic/JDK-8087211.js

Tue, 21 Mar 2017 13:41:57 -0700

author
asaha
date
Tue, 21 Mar 2017 13:41:57 -0700
changeset 2160
1df40fe54cd6
parent 1482
58791cd01bc9
permissions
-rw-r--r--

Merge

sundar@1406 1 /*
sundar@1482 2 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
sundar@1406 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
sundar@1482 4 *
sundar@1406 5 * This code is free software; you can redistribute it and/or modify it
sundar@1406 6 * under the terms of the GNU General Public License version 2 only, as
sundar@1406 7 * published by the Free Software Foundation.
sundar@1482 8 *
sundar@1406 9 * This code is distributed in the hope that it will be useful, but WITHOUT
sundar@1406 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
sundar@1406 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
sundar@1406 12 * version 2 for more details (a copy is included in the LICENSE file that
sundar@1406 13 * accompanied this code).
sundar@1482 14 *
sundar@1406 15 * You should have received a copy of the GNU General Public License version
sundar@1406 16 * 2 along with this work; if not, write to the Free Software Foundation,
sundar@1406 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
sundar@1482 18 *
sundar@1406 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
sundar@1406 20 * or visit www.oracle.com if you need additional information or have any
sundar@1406 21 * questions.
sundar@1406 22 */
sundar@1406 23
sundar@1406 24 /**
sundar@1406 25 * JDK-8087211: Indirect evals should be strict with -strict option
sundar@1406 26 *
sundar@1406 27 * @test
sundar@1406 28 * @run
sundar@1406 29 * @option -strict
sundar@1406 30 */
sundar@1406 31
sundar@1406 32 var global = this;
sundar@1406 33
sundar@1406 34 try {
sundar@1406 35 // indirect eval call.
sundar@1406 36 global.eval("x = 34;");
sundar@1406 37 throw new Error("should have thrown ReferenceError");
sundar@1406 38 } catch (e if e instanceof ReferenceError) {
sundar@1406 39 }
sundar@1406 40
sundar@1406 41
sundar@1406 42 function teststrict() {
sundar@1406 43 "use strict";
sundar@1406 44 // strict caller, indirect eval.
sundar@1406 45 global.eval('public = 1;');
sundar@1406 46 }
sundar@1406 47
sundar@1406 48 try {
sundar@1406 49 teststrict();
sundar@1406 50 throw new Error("should have thrown SyntaxError");
sundar@1406 51 } catch (e if e instanceof SyntaxError) {
sundar@1406 52 }
sundar@1406 53
sundar@1406 54 function testnonstrict() {
sundar@1406 55 // non strict caller, indirect eval.
sundar@1406 56 global.eval('public = 1;');
sundar@1406 57 }
sundar@1406 58
sundar@1406 59 try {
sundar@1406 60 testnonstrict();
sundar@1406 61 throw new Error("should have thrown SyntaxError");
sundar@1406 62 } catch (e if e instanceof SyntaxError) {
sundar@1406 63 }

mercurial