summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/tools/nsc/transform/Erasure.scala2
-rw-r--r--test/files/jvm/ticket2163/ticket2163.java9
-rw-r--r--test/files/jvm/ticket2163/ticket2163.scala5
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