@@ -16,6 +16,7 @@ object HelloWorld:
16
16
testScala2UnapplySignatures()
17
17
testScala2ObjectParents()
18
18
testScala2CaseClassUnderscoreMembers()
19
+ testScalaNumberUnderlying()
19
20
}
20
21
21
22
def testScala2UnapplySignatures () = {
@@ -37,3 +38,32 @@ object HelloWorld:
37
38
val some : Some [Int ] = Some (1 )
38
39
// FIXME: assert(!typeChecks("some._1"))
39
40
}
41
+
42
+ def testScalaNumberUnderlying () = {
43
+ import scala .math .{ScalaNumericConversions , ScalaNumber }
44
+
45
+ val _: java.math.BigInteger = BigInt (1 ).underlying
46
+ val _: Object = (BigInt (1 ): ScalaNumericConversions ).underlying
47
+ val _: Object = (BigInt (1 ): ScalaNumber ).underlying
48
+
49
+ // val _: java.math.BigDecimal = BigDecimal(1).underlying // FIXME: inferred result type of non-private method
50
+ val _: Object = (BigDecimal (1 ): ScalaNumericConversions ).underlying
51
+ val _: Object = (BigDecimal (1 ): ScalaNumber ).underlying
52
+
53
+ class MyNumber1 (override val underlying : BigInt ) extends ScalaNumericConversions {
54
+ def doubleValue : Double = ??? ; def floatValue : Float = ??? ;
55
+ def intValue : Int = ??? ; def longValue : Long = ???
56
+ def isWhole : Boolean = ???
57
+ }
58
+ val _: BigInt = MyNumber1 (1 ).underlying
59
+ val _: Object = (MyNumber1 (1 ): ScalaNumericConversions ).underlying
60
+ val _: Object = (MyNumber1 (1 ): ScalaNumber ).underlying
61
+
62
+ class MyNumber2 (override val underlying : Object ) extends ScalaNumber {
63
+ def doubleValue : Double = ??? ; def floatValue : Float = ??? ;
64
+ def intValue : Int = ??? ; def longValue : Long = ???
65
+ def isWhole : Boolean = ???
66
+ }
67
+ val _: Object = MyNumber2 (BigInt (1 )).underlying
68
+ val _: Object = (MyNumber2 (BigInt (1 )): ScalaNumber ).underlying
69
+ }
0 commit comments