From ec7cc94358fc73308b12a468d1671752fad439a0 Mon Sep 17 00:00:00 2001 From: Lukas Rytz Date: Thu, 9 Sep 2010 08:25:47 +0000 Subject: close #3791 according to jason's proposal. long cycle (deprecate, remove, add with new behavior). I tried adding Scaladoc for these members but failed for now, see my message in internals. --- .../scala/tools/nsc/symtab/Definitions.scala | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/compiler/scala/tools/nsc/symtab/Definitions.scala b/src/compiler/scala/tools/nsc/symtab/Definitions.scala index 534cfb566a..a7fbcd7019 100644 --- a/src/compiler/scala/tools/nsc/symtab/Definitions.scala +++ b/src/compiler/scala/tools/nsc/symtab/Definitions.scala @@ -714,10 +714,15 @@ trait Definitions extends reflect.generic.StandardDefinitions { List(ByteClass, ShortClass, CharClass, IntClass, LongClass) foreach (x => initValueClass(x, true)) List(FloatClass, DoubleClass) foreach (x => initValueClass(x, false)) - def addModuleMethod(clazz: Symbol, name: Name, value: Any) { + def addModuleMethod(clazz: Symbol, name: Name, value: Any) = { val owner = clazz.linkedClassOfClass newParameterlessMethod(owner, name, ConstantType(Constant(value))) } + def addDeprecatedModuleMethod(clazz: Symbol, name: Name, value: Any, msg: String) = { + val m = addModuleMethod(clazz, name, value) + val arg = Literal(Constant(msg)) + m.addAnnotation(AnnotationInfo(DeprecatedAttr.tpe, List(arg), List())) + } addModuleMethod(ByteClass, "MinValue", java.lang.Byte.MIN_VALUE) addModuleMethod(ByteClass, "MaxValue", java.lang.Byte.MAX_VALUE) addModuleMethod(ShortClass, "MinValue", java.lang.Short.MIN_VALUE) @@ -729,16 +734,22 @@ trait Definitions extends reflect.generic.StandardDefinitions { addModuleMethod(LongClass, "MinValue", java.lang.Long.MIN_VALUE) addModuleMethod(LongClass, "MaxValue", java.lang.Long.MAX_VALUE) - addModuleMethod(FloatClass, "MinValue", -java.lang.Float.MAX_VALUE) + addDeprecatedModuleMethod(FloatClass, "MinValue", -java.lang.Float.MAX_VALUE, "use Float.MinNegativeValue instead") + addModuleMethod(FloatClass, "MinNegativeValue", -java.lang.Float.MAX_VALUE) addModuleMethod(FloatClass, "MaxValue", java.lang.Float.MAX_VALUE) - addModuleMethod(FloatClass, "Epsilon", java.lang.Float.MIN_VALUE) + addDeprecatedModuleMethod(FloatClass, "Epsilon", java.lang.Float.MIN_VALUE, "use Float.MinPositiveValue instead") + addModuleMethod(FloatClass, "MinPositiveValue", -java.lang.Float.MAX_VALUE) addModuleMethod(FloatClass, "NaN", java.lang.Float.NaN) addModuleMethod(FloatClass, "PositiveInfinity", java.lang.Float.POSITIVE_INFINITY) addModuleMethod(FloatClass, "NegativeInfinity", java.lang.Float.NEGATIVE_INFINITY) - addModuleMethod(DoubleClass, "MinValue", -java.lang.Double.MAX_VALUE) + addDeprecatedModuleMethod(DoubleClass, "MinValue", -java.lang.Double.MAX_VALUE, "use Double.MinNegativeValue instead") + addModuleMethod(DoubleClass, "MinNegativeValue", -java.lang.Double.MAX_VALUE) addModuleMethod(DoubleClass, "MaxValue", java.lang.Double.MAX_VALUE) - addModuleMethod(DoubleClass, "Epsilon", java.lang.Double.MIN_VALUE) + // see #3791. change cycle for `Epsilon`: 1. deprecate, 2. remove, 3. re-introduce as + // org.apache.commons.math.util.MathUtils.EPSILON (0x1.0p-53). not sure what to do for float. + addDeprecatedModuleMethod(DoubleClass, "Epsilon", java.lang.Double.MIN_VALUE, "use Double.MinPositiveValue instead") + addModuleMethod(DoubleClass, "MinPositiveValue", java.lang.Double.MIN_VALUE) addModuleMethod(DoubleClass, "NaN", java.lang.Double.NaN) addModuleMethod(DoubleClass, "PositiveInfinity", java.lang.Double.POSITIVE_INFINITY) addModuleMethod(DoubleClass, "NegativeInfinity", java.lang.Double.NEGATIVE_INFINITY) -- cgit v1.2.3