8019482: Number("0x0.0p0") should evaluate to NaN

Reviewed-by: lagergren
This commit is contained in:
Athijegannathan Sundararajan 2013-07-01 17:21:09 +05:30
parent 1a074a8b66
commit 135ccaceef
4 changed files with 44 additions and 6 deletions

View File

@ -30,10 +30,7 @@ import static jdk.nashorn.internal.lookup.Lookup.MH;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.util.ArrayList;
import java.util.List;
import jdk.nashorn.api.scripting.NashornException;
import jdk.nashorn.internal.codegen.CompilerConstants;
import jdk.nashorn.internal.lookup.MethodHandleFactory;
import jdk.nashorn.internal.objects.annotations.Attribute;
import jdk.nashorn.internal.objects.annotations.Constructor;
@ -41,7 +38,6 @@ import jdk.nashorn.internal.objects.annotations.Function;
import jdk.nashorn.internal.objects.annotations.Property;
import jdk.nashorn.internal.objects.annotations.ScriptClass;
import jdk.nashorn.internal.objects.annotations.Where;
import jdk.nashorn.internal.runtime.ECMAErrors;
import jdk.nashorn.internal.runtime.ECMAException;
import jdk.nashorn.internal.runtime.JSType;
import jdk.nashorn.internal.runtime.PropertyMap;
@ -123,6 +119,7 @@ public final class NativeError extends ScriptObject {
* Nashorn extension: Error.captureStackTrace. Capture stack trace at the point of call into the Error object provided.
*
* @param self self reference
* @return undefined
*/
@Function(attributes = Attribute.NOT_ENUMERABLE, where = Where.CONSTRUCTOR)
public static Object captureStackTrace(final Object self, final Object errorObj) {

View File

@ -51,7 +51,7 @@ public final class ECMAException extends NashornException {
/** Field handle to the{@link ECMAException#thrown} field, so that it can be accessed from generated code */
public static final FieldAccess THROWN = virtualField(ECMAException.class, "thrown", Object.class);
public static final String EXCEPTION_PROPERTY = "nashornException";
private static final String EXCEPTION_PROPERTY = "nashornException";
/** Object thrown. */
public final Object thrown;

View File

@ -911,7 +911,7 @@ public enum JSType {
for (int i = start; i < length ; i++) {
if (digit(chars[i], radix) == -1) {
break;
return Double.NaN;
}
pos++;
}

View File

@ -0,0 +1,41 @@
/*
* 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-8019482: Number("0x0.0p0") should evaluate to NaN
*
* @test
* @run
*/
function checkHexLiteral(str) {
if (! isNaN(Number(str))) {
fail("Number(" + str + ") is not NaN");
}
}
checkHexLiteral("0x0.0");
checkHexLiteral("0x0.0p");
checkHexLiteral("0x12tu");
checkHexLiteral("0x12.2e22");
checkHexLiteral("0xtu");