@@ -17,8 +17,17 @@ object Test {
1717 def bar5 [T ](a : Class [? <: T ]): Int = 1
1818 def bar5 [T ](a : Class [T ], ints : Int * ): Int = 2
1919
20- def bar6 [T ](a : Int ): Int = 1
21- def bar6 [T ](a : Class [T ], ints : Int * ): Int = 2
20+ def bar6 [T ](a : Class [T ], ints : Int * ): Int = 1
21+ def bar6 [T ](a : Int ): Int = 2
22+
23+ def bar7 [T <: Number ](a : Class [? <: T ]): Int = 1
24+ def bar7 [T <: Number ](a : Class [T ], ints : Int * ): Int = 2
25+
26+ def bar8 [T <: Number ](a : Class [? <: T ]): Int = 1 // (a)
27+ def bar8 [T ](a : Class [T ], ints : Int * ): Int = 2 // (b)
28+
29+ def bar9 [T ](a : Class [? <: T ]): Int = 1 // (a)
30+ def bar9 [T <: Number ](a : Class [T ], ints : Int * ): Int = 2 // (b)
2231
2332 def main (args : Array [String ]): Unit = {
2433 // In Java, varargs are always less specific than non-varargs (see
@@ -29,13 +38,21 @@ object Test {
2938 assert(A_1 .foo2(" " ) == 1 ) // Same as in Java and Scala 2
3039 assert(A_1 .foo3(" " ) == 1 ) // Same as in Java and Scala 2
3140 assert(A_1 .foo4(" " ) == 1 ) // Same as in Java and Scala 2
41+ assert(A_1 .foo5(classOf [Object ]) == 1 ) // Same as in Java and Scala 2
42+ assert(A_1 .foo6(classOf [Object ]) == 1 ) // Same as in Java and Scala 2
43+ assert(A_1 .foo7(classOf [Integer ]) == 1 ) // Same as in Java and Scala 2
44+ assert(A_1 .foo8(classOf [Integer ]) == 1 ) // Same as in Java and Scala 2
45+ // assert(A_1.foo9(classOf[Integer]) == 1) // Works in Java, ambiguous in Scala 2 and 3
3246
3347 // Same with Scala varargs:
3448 // assert(bar1("") == 1) // Works in Java, ambiguous in Scala 2 and Dotty
3549 assert(bar2(" " ) == 1 ) // same in Scala 2
3650 assert(bar3(" " ) == 1 ) // same in Scala 2
3751 assert(bar4(" " ) == 1 ) // same in Scala 2
3852 assert(bar5(classOf [Object ]) == 1 ) // same in Scala2
39- assert(bar6(classOf [Object ]) == 2 ) // same in Scala2
53+ assert(bar6(classOf [Object ]) == 1 ) // same in Scala2
54+ assert(bar7(classOf [Integer ]) == 1 ) // same in Scala2
55+ assert(bar8(classOf [Integer ]) == 1 ) // same in Scala2
56+ // assert(bar9(classOf[Integer]) == 1) Works in Java, ambiguous in Scala 2 and 3
4057 }
4158}
0 commit comments