Tue, 16 Aug 2016 21:41:28 -0700
Added tag jdk8u102-b33 for changeset 36e3c21b5fca
attila@963 | 1 | /* |
attila@963 | 2 | * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. |
attila@963 | 3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
attila@963 | 4 | * |
attila@963 | 5 | * This code is free software; you can redistribute it and/or modify it |
attila@963 | 6 | * under the terms of the GNU General Public License version 2 only, as |
attila@963 | 7 | * published by the Free Software Foundation. |
attila@963 | 8 | * |
attila@963 | 9 | * This code is distributed in the hope that it will be useful, but WITHOUT |
attila@963 | 10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
attila@963 | 11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
attila@963 | 12 | * version 2 for more details (a copy is included in the LICENSE file that |
attila@963 | 13 | * accompanied this code). |
attila@963 | 14 | * |
attila@963 | 15 | * You should have received a copy of the GNU General Public License version |
attila@963 | 16 | * 2 along with this work; if not, write to the Free Software Foundation, |
attila@963 | 17 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
attila@963 | 18 | * |
attila@963 | 19 | * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
attila@963 | 20 | * or visit www.oracle.com if you need additional information or have any |
attila@963 | 21 | * questions. |
attila@963 | 22 | */ |
attila@963 | 23 | |
attila@963 | 24 | /** |
attila@963 | 25 | * JDK-8047057: Add a regression test for the passing test cases from JDK-8042304 |
attila@963 | 26 | * |
attila@963 | 27 | * @test |
attila@963 | 28 | * @run |
attila@963 | 29 | */ |
attila@963 | 30 | |
attila@963 | 31 | // commented out makeFuncAndCall calls are still result in crash |
attila@963 | 32 | // Tests commented with //** fail only when assertions are turned on |
attila@963 | 33 | |
attila@963 | 34 | function makeFuncAndCall(code) { |
attila@963 | 35 | Function(code)(); |
attila@963 | 36 | } |
attila@963 | 37 | |
attila@963 | 38 | function makeFuncExpectError(code, ErrorType) { |
attila@963 | 39 | try { |
attila@963 | 40 | makeFuncAndCall(code); |
attila@963 | 41 | } catch (e) { |
attila@963 | 42 | if (! (e instanceof ErrorType)) { |
attila@963 | 43 | fail(ErrorType.name + " expected, got " + e); |
attila@963 | 44 | } |
attila@963 | 45 | } |
attila@963 | 46 | } |
attila@963 | 47 | |
attila@963 | 48 | makeFuncAndCall("switch(0) { default: {break;} return }"); |
attila@963 | 49 | makeFuncAndCall("L: { { break L; } return; }"); |
attila@963 | 50 | makeFuncAndCall("L: { while(0) break L; return; }"); |
attila@963 | 51 | makeFuncExpectError("L: {while(0) break L; return [](); }", TypeError); |
attila@963 | 52 | makeFuncAndCall("do with({}) break ; while(0);"); |
attila@963 | 53 | makeFuncAndCall("while(0) with({}) continue ;"); |
attila@963 | 54 | makeFuncAndCall("eval([]);"); |
attila@963 | 55 | makeFuncAndCall("try{} finally{[]}"); |
attila@963 | 56 | makeFuncAndCall("try { } catch(x if 1) { try { } catch(x2) { } }"); |
attila@963 | 57 | makeFuncAndCall("try { } catch(x if 1) { try { return; } catch(x2) { { } } }"); |
attila@963 | 58 | makeFuncAndCall("Error() * (false)[-0]--"); |
attila@963 | 59 | makeFuncAndCall("try { var x = 1, x = null; } finally { }"); |
attila@963 | 60 | makeFuncAndCall("try { var x = {}, x = []; } catch(x3) { }"); |
attila@963 | 61 | makeFuncAndCall("[delete this]"); |
attila@963 | 62 | makeFuncAndCall("if(eval('', eval('', function() {}))) { }"); |
attila@963 | 63 | makeFuncAndCall("if(eval('', eval('', function() {}))) { }"); |
attila@963 | 64 | makeFuncAndCall("eval(\"[,,];\", [11,12,13,14].some)"); |
attila@963 | 65 | makeFuncAndCall("eval(\"1.2e3\", ({})[ /x/ ])"); |
attila@963 | 66 | makeFuncExpectError("eval(\"x4\", x3);", ReferenceError); |
attila@963 | 67 | makeFuncAndCall("with({5.0000000000000000000000: String()}){(false); }"); |
attila@963 | 68 | makeFuncAndCall("try { var x = undefined, x = 5.0000000000000000000000; } catch(x) { x = undefined; }"); |
attila@963 | 69 | makeFuncAndCall("(function (x){ x %= this}(false))"); |
attila@963 | 70 | makeFuncAndCall("eval.apply.apply(function(){ eval('') })"); |
attila@963 | 71 | makeFuncAndCall("(false % !this) && 0"); |
attila@963 | 72 | makeFuncAndCall("with({8: 'fafafa'.replace()}){ }"); |
attila@963 | 73 | makeFuncAndCall("(function (x) '' )(true)"); |
attila@963 | 74 | makeFuncExpectError("new eval(function(){})", TypeError); |
attila@963 | 75 | makeFuncAndCall('eval("23", ({})[/x/])'); |