diff --git a/nashorn/src/jdk/nashorn/internal/codegen/CodeGenerator.java b/nashorn/src/jdk/nashorn/internal/codegen/CodeGenerator.java index 6ea53a408fa..df6906c6bb7 100644 --- a/nashorn/src/jdk/nashorn/internal/codegen/CodeGenerator.java +++ b/nashorn/src/jdk/nashorn/internal/codegen/CodeGenerator.java @@ -578,6 +578,7 @@ final class CodeGenerator extends NodeOperatorVisitor(new LexicalContext()) { @@ -593,7 +594,7 @@ final class CodeGenerator extends NodeOperatorVisitor> window; +} + +Function("L:if((function x ()3)() + arguments++) {return; } else if (new gc()) while(((x2.prop = functional)) && 0){ }"); + +Function("var x = x -= '' "); + +Function("switch((Math.pow ? x = 1.2e3 : 3)) { default: return; }") + +Function("x = 0.1, x\ntrue\n~this"); + +Function("with((function (x)x2)() ^ this){return; }"); + \ No newline at end of file diff --git a/nashorn/test/script/basic/JDK-8019817.js b/nashorn/test/script/basic/JDK-8019817.js new file mode 100644 index 00000000000..6611e9b49e7 --- /dev/null +++ b/nashorn/test/script/basic/JDK-8019817.js @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * JDK-8019817: More number coercion issues + * + * @test + * @run + */ +var y = 17.17; + +Function("return y % function(q) { return q; }();"); + +function f() { + return y % function(q) { return q; }(); +} +f(); diff --git a/nashorn/test/script/currently-failing/JDK-8019809.js b/nashorn/test/script/currently-failing/JDK-8019809.js new file mode 100644 index 00000000000..cc31bd86201 --- /dev/null +++ b/nashorn/test/script/currently-failing/JDK-8019809.js @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * JDK-8019809: Break return combo that generates erroneous bytecode + * + * @test + * @run + */ + +//Function("L: {break L;return; }"); + +function f() { + L: { break L; return; } +} + +f();