From e1628ee6deb2b9062824350fc58d1a01f132d61d Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Wed, 16 Nov 2011 15:08:50 -0500 Subject: [PATCH] use newNumber when doing fromAnyRef on a Number with unknown subclass --- src/main/java/com/typesafe/config/impl/ConfigImpl.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/typesafe/config/impl/ConfigImpl.java b/src/main/java/com/typesafe/config/impl/ConfigImpl.java index fc001088..a80d2355 100644 --- a/src/main/java/com/typesafe/config/impl/ConfigImpl.java +++ b/src/main/java/com/typesafe/config/impl/ConfigImpl.java @@ -199,6 +199,11 @@ public class ConfigImpl { } else if (object instanceof String) { return new ConfigString(origin, (String) object); } else if (object instanceof Number) { + // here we always keep the same type that was passed to us, + // rather than figuring out if a Long would fit in an Int + // or a Double has no fractional part. i.e. deliberately + // not using ConfigNumber.newNumber() when we have a + // Double, Integer, or Long. if (object instanceof Double) { return new ConfigDouble(origin, (Double) object, null); } else if (object instanceof Integer) { @@ -206,7 +211,7 @@ public class ConfigImpl { } else if (object instanceof Long) { return new ConfigLong(origin, (Long) object, null); } else { - return new ConfigDouble(origin, + return ConfigNumber.newNumber(origin, ((Number) object).doubleValue(), null); } } else if (object instanceof Map) {