diff options
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/Erasure.scala | 6 | ||||
-rw-r--r-- | test/files/pos/generic-sigs.flags | 1 | ||||
-rw-r--r-- | test/files/pos/generic-sigs.scala | 7 |
3 files changed, 11 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Erasure.scala b/src/compiler/scala/tools/nsc/transform/Erasure.scala index f89e005858..ccebcb62ea 100644 --- a/src/compiler/scala/tools/nsc/transform/Erasure.scala +++ b/src/compiler/scala/tools/nsc/transform/Erasure.scala @@ -250,9 +250,9 @@ abstract class Erasure extends AddInterfaces val bounds = tp.typeSymbol.info.bounds if (AnyRefClass.tpe <:< bounds.hi) { if (bounds.lo <:< NullClass.tpe) "*" - else "-" + jsig(bounds.lo) + else "-" + boxedSig(bounds.lo) } - else "+" + jsig(bounds.hi) + else "+" + boxedSig(bounds.hi) } else if (tp.typeSymbol == UnitClass) { jsig(ObjectClass.tpe) @@ -319,7 +319,7 @@ abstract class Erasure extends AddInterfaces "("+(params map (_.tpe) map jsig).mkString+")"+ (if (restpe.typeSymbol == UnitClass || sym0.isConstructor) VOID_TAG.toString else jsig(restpe)) case RefinedType(parents, decls) if (!parents.isEmpty) => - jsig(parents.head) + boxedSig(parents.head) case ClassInfoType(parents, _, _) => (parents map jsig).mkString case AnnotatedType(_, atp, _) => diff --git a/test/files/pos/generic-sigs.flags b/test/files/pos/generic-sigs.flags new file mode 100644 index 0000000000..e8fb65d50c --- /dev/null +++ b/test/files/pos/generic-sigs.flags @@ -0,0 +1 @@ +-Xfatal-warnings
\ No newline at end of file diff --git a/test/files/pos/generic-sigs.scala b/test/files/pos/generic-sigs.scala new file mode 100644 index 0000000000..4822cfcfb0 --- /dev/null +++ b/test/files/pos/generic-sigs.scala @@ -0,0 +1,7 @@ +object A { + def f1 = List(classOf[Int], classOf[String]) + def f2 = List(classOf[String], classOf[Int]) + def f3(x: Class[_ <: Int]) = x + def f4(x: Class[_ <: String with Int]) = x + def f5(x: Class[_ <: Int with String]) = x +}
\ No newline at end of file |