Skip to content

Commit

Permalink
spotlessApply
Browse files Browse the repository at this point in the history
  • Loading branch information
tonygermano committed Sep 5, 2024
1 parent e31e893 commit 835cac3
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 33 deletions.
33 changes: 19 additions & 14 deletions rhino/src/main/java/org/mozilla/javascript/NativeDate.java
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,8 @@ public Object execIdCall(
final String toISOString = "toISOString";

Scriptable o = ScriptRuntime.toObject(cx, scope, thisObj);
Object tv = ScriptRuntime.toPrimitive(o, Optional.of(ScriptRuntime.NumberClass));
Object tv =
ScriptRuntime.toPrimitive(o, Optional.of(ScriptRuntime.NumberClass));
if (tv instanceof Number) {
double d = ((Number) tv).doubleValue();
if (Double.isNaN(d) || Double.isInfinite(d)) {
Expand Down Expand Up @@ -332,19 +333,23 @@ public Object execIdCall(
Scriptable o = ScriptRuntime.toObject(cx, scope, thisObj);
final Object arg0 = args.length > 0 ? args[0] : Undefined.instance;
final Optional<String> hint =
Optional.ofNullable(arg0 instanceof CharSequence ? arg0.toString() : null);
final Class<?> tryFirst = hint
.map(h -> {
if (h.equals("string") || h.equals("default")) {
return ScriptRuntime.StringClass;
} else if (h.equals("number")) {
return ScriptRuntime.NumberClass;
}
return null;
})
.orElseThrow(() -> ScriptRuntime.typeErrorById(
"msg.invalid.toprimitive.hint",
ScriptRuntime.toString(arg0)));
Optional.ofNullable(
arg0 instanceof CharSequence ? arg0.toString() : null);
final Class<?> tryFirst =
hint.map(
h -> {
if (h.equals("string") || h.equals("default")) {
return ScriptRuntime.StringClass;
} else if (h.equals("number")) {
return ScriptRuntime.NumberClass;
}
return null;
})
.orElseThrow(
() ->
ScriptRuntime.typeErrorById(
"msg.invalid.toprimitive.hint",
ScriptRuntime.toString(arg0)));
return ScriptableObject.getDefaultValue(o, tryFirst);
}
}
Expand Down
42 changes: 23 additions & 19 deletions rhino/src/main/java/org/mozilla/javascript/ScriptRuntime.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import java.util.Optional;
import java.util.ResourceBundle;
import java.util.function.BiConsumer;

import org.mozilla.javascript.ast.FunctionNode;
import org.mozilla.javascript.v8dtoa.DoubleConversion;
import org.mozilla.javascript.v8dtoa.FastDtoa;
Expand Down Expand Up @@ -722,15 +721,13 @@ public static BigInteger toBigInt(Object val) {
} else {
double d = ((Number) val).doubleValue();
if (Double.isNaN(d) || Double.isInfinite(d)) {
throw rangeErrorById(
"msg.cant.convert.to.bigint.isnt.integer", toString(val));
throw rangeErrorById("msg.cant.convert.to.bigint.isnt.integer", toString(val));
}
BigDecimal bd = new BigDecimal(d, MathContext.UNLIMITED);
try {
return bd.toBigIntegerExact();
} catch (ArithmeticException e) {
throw rangeErrorById(
"msg.cant.convert.to.bigint.isnt.integer", toString(val));
throw rangeErrorById("msg.cant.convert.to.bigint.isnt.integer", toString(val));
}
}
}
Expand Down Expand Up @@ -2977,23 +2974,25 @@ public static Object add(Object lval, Object rval, Context cx) {
if (lval instanceof BigInteger && rval instanceof BigInteger) {
return ((BigInteger) lval).add((BigInteger) rval);
}
if (lval instanceof Number && !(lval instanceof BigInteger)
&& rval instanceof Number && !(rval instanceof BigInteger)) {
if (lval instanceof Number
&& !(lval instanceof BigInteger)
&& rval instanceof Number
&& !(rval instanceof BigInteger)) {
return wrapNumber(((Number) lval).doubleValue() + ((Number) rval).doubleValue());
}

// spec starts here for abstract operation ApplyStringOrNumericBinaryOperator
// where opText is "+".
// where opText is "+".
final Object lprim = toPrimitive(lval);
final Object rprim = toPrimitive(rval);
if (lprim instanceof CharSequence || rprim instanceof CharSequence) {
final CharSequence lstr = (lprim instanceof CharSequence)
? (CharSequence) lprim : toString(lprim);
final CharSequence rstr = (rprim instanceof CharSequence)
? (CharSequence) rprim : toString(rprim);
final CharSequence lstr =
(lprim instanceof CharSequence) ? (CharSequence) lprim : toString(lprim);
final CharSequence rstr =
(rprim instanceof CharSequence) ? (CharSequence) rprim : toString(rprim);
return new ConsString(lstr, rstr);
}

// e4x extension start
if (lval instanceof XMLObject) {
Object test = ((XMLObject) lval).addValues(cx, true, rval);
Expand Down Expand Up @@ -3471,7 +3470,7 @@ public static Object toPrimitive(Object input, Class<?> preferredType) {
return toPrimitive(input, Optional.ofNullable(preferredType));
}

/**
/*
* 1. If input is an Object, then
* a. Let exoticToPrim be ? GetMethod(input, @@toPrimitive).
* b. If exoticToPrim is not undefined, then
Expand All @@ -3488,6 +3487,8 @@ public static Object toPrimitive(Object input, Class<?> preferredType) {
* c. If preferredType is not present, let preferredType be number.
* d. Return ? OrdinaryToPrimitive(input, preferredType).
* 2. Return input.
/
/**
* @param input
* @param preferredType
* @return
Expand All @@ -3503,17 +3504,20 @@ public static Object toPrimitive(Object input, Optional<Class<?>> preferredType)
final Function func = (Function) exoticToPrim;
final Context cx = Context.getCurrentContext();
final Scriptable scope = func.getParentScope();
final String hint = preferredType
.map(type -> type == StringClass ? "string" : "number")
.orElse("default");
final String hint =
preferredType
.map(type -> type == StringClass ? "string" : "number")
.orElse("default");
final Object[] args = new Object[] {hint};
final Object result = func.call(cx, scope, s, args);
if (isObject(result)) {
throw typeErrorById("msg.cant.convert.to.primitive");
}
return result;
}
if (!Undefined.isUndefined(exoticToPrim) && exoticToPrim != null && exoticToPrim != Scriptable.NOT_FOUND) {
if (!Undefined.isUndefined(exoticToPrim)
&& exoticToPrim != null
&& exoticToPrim != Scriptable.NOT_FOUND) {
throw notFunctionError(exoticToPrim);
}
final Class<?> defaultValueHint = preferredType.orElse(NumberClass);
Expand Down

0 comments on commit 835cac3

Please sign in to comment.