# HG changeset patch # User sundar # Date 1361286187 -19800 # Node ID 45ef95e878be502b251407b520fe38273485e22d # Parent e4bcc4b4f897008f5d1d0a91d5c8dadbda8b2644 8008448: Add coverage test for jdk.nashorn.internal.ir.debug.JSONWriter Reviewed-by: jlaskey, attila diff -r e4bcc4b4f897 -r 45ef95e878be nashorn/src/jdk/nashorn/internal/ir/debug/JSONWriter.java --- a/nashorn/src/jdk/nashorn/internal/ir/debug/JSONWriter.java Tue Feb 19 09:47:02 2013 -0400 +++ b/nashorn/src/jdk/nashorn/internal/ir/debug/JSONWriter.java Tue Feb 19 20:33:07 2013 +0530 @@ -323,16 +323,20 @@ public Node enter(final ForNode forNode) { enterDefault(forNode); - if (forNode.isForIn() || forNode.isForEach()) { + if (forNode.isForIn() || (forNode.isForEach() && forNode.getInit() != null)) { type("ForInStatement"); comma(); + Node init = forNode.getInit(); + assert init != null; property("left"); - forNode.getInit().accept(this); + init.accept(this); comma(); + Node modify = forNode.getModify(); + assert modify != null; property("right"); - forNode.getModify().accept(this); + modify.accept(this); comma(); property("body"); @@ -618,6 +622,9 @@ // setter final Node setter = propertyNode.getSetter(); if (setter != null) { + if (getter != null) { + comma(); + } objectStart(); location(propertyNode); @@ -770,11 +777,11 @@ final boolean prefix; final String operator; switch (tokenType) { - case DECPOSTFIX: + case INCPOSTFIX: prefix = false; operator = "++"; break; - case INCPOSTFIX: + case DECPOSTFIX: prefix = false; operator = "--"; break; @@ -938,8 +945,12 @@ int idx = 0; arrayStart(name); for (final Node node : nodes) { - if (! node.isDebug()) { - node.accept(this); + if (node == null || !node.isDebug()) { + if (node != null) { + node.accept(this); + } else { + nullValue(); + } if (idx != (size - 1)) { comma(); } diff -r e4bcc4b4f897 -r 45ef95e878be nashorn/test/script/basic/JDK-8008448.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nashorn/test/script/basic/JDK-8008448.js Tue Feb 19 20:33:07 2013 +0530 @@ -0,0 +1,48 @@ +/* + * 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-8008448: Add coverage test for jdk.nashorn.internal.ir.debug.JSONWriter + * Ensure that all parseable files can be parsed using parser API. + * + * @test + * @option -scripting + * @run + */ + +var File = Java.type("java.io.File"); +var FilenameFilter = Java.type("java.io.FilenameFilter"); +var Source = Java.type("jdk.nashorn.internal.runtime.Source") + +// Filter out non .js files +var files = new File(__DIR__).listFiles(new FilenameFilter() { + accept: function(f, n) { return n.endsWith(".js") } +}); + +// load parser API +load("nashorn:parser.js"); + +// parse each file to make sure it does not result in exception +for each (var f in files) { + parse(new Source(f.toString(), f).getString()); +}