diff options
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/Erasure.scala | 2 | ||||
-rw-r--r-- | test/files/jvm/ticket2163/ticket2163.java | 9 | ||||
-rw-r--r-- | test/files/jvm/ticket2163/ticket2163.scala | 5 |
3 files changed, 15 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Erasure.scala b/src/compiler/scala/tools/nsc/transform/Erasure.scala index 747c1fb902..2b9b66b0ff 100644 --- a/src/compiler/scala/tools/nsc/transform/Erasure.scala +++ b/src/compiler/scala/tools/nsc/transform/Erasure.scala @@ -194,7 +194,7 @@ abstract class Erasure extends AddInterfaces with typechecker.Analyzer with ast. "."+sym.name if (sym == ArrayClass) ARRAY_TAG.toString+(args map jsig).mkString - else if (sym.isTypeParameterOrSkolem) + else if (sym.isTypeParameterOrSkolem && !sym.owner.isTypeParameterOrSkolem /*not a higher-order type parameter, as these are suppressed*/) TVAR_TAG.toString+sym.name+";" else if (sym == AnyClass || sym == AnyValClass || sym == SingletonClass) jsig(ObjectClass.tpe) diff --git a/test/files/jvm/ticket2163/ticket2163.java b/test/files/jvm/ticket2163/ticket2163.java new file mode 100644 index 0000000000..f8f26f0140 --- /dev/null +++ b/test/files/jvm/ticket2163/ticket2163.java @@ -0,0 +1,9 @@ +import java.util.*; + +public class ticket2163 { + public void test() { + List<Integer> array = new ArrayList<Integer>(); + Ticket2163Scala<List> foo = new Ticket2163Scala<List>(array); + foo.bar(array); + } +}
\ No newline at end of file diff --git a/test/files/jvm/ticket2163/ticket2163.scala b/test/files/jvm/ticket2163/ticket2163.scala new file mode 100644 index 0000000000..b6c51f41fb --- /dev/null +++ b/test/files/jvm/ticket2163/ticket2163.scala @@ -0,0 +1,5 @@ +class Ticket2163Scala[CC[X]](x: CC[Int]) { + def bar[DD[X]](meh: DD[Int]): CC[Int] = x +} + +object Test extends Application {}
\ No newline at end of file |