summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2016-05-18 12:57:49 +1000
committerJason Zaugg <jzaugg@gmail.com>2016-05-18 14:30:16 +1000
commitaf972a5019d0c5e8f4be4363eeed590c8fb384c3 (patch)
treeb82ce863b8a6596b1093f9485dff6463aa8024ec
parentd3e10c0b0aa95408873072262f0d728b96cfd885 (diff)
downloadscala-af972a5019d0c5e8f4be4363eeed590c8fb384c3.tar.gz
scala-af972a5019d0c5e8f4be4363eeed590c8fb384c3.tar.bz2
scala-af972a5019d0c5e8f4be4363eeed590c8fb384c3.zip
SI-8756 Fix generic signature for refinement of primitive
Java generic signature generation was making the wrong assumption about how refinement types should erase to Java generics. This commit passes through the current value of `primitiveOk`, rather than forcing it to `true`. This flag is true when generating the signature for `f2`, but false in `i2` (as we are in a type argument position).
-rw-r--r--src/compiler/scala/tools/nsc/transform/Erasure.scala2
-rw-r--r--test/files/run/t8756.check2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Erasure.scala b/src/compiler/scala/tools/nsc/transform/Erasure.scala
index 0301e06c87..bc614dfc31 100644
--- a/src/compiler/scala/tools/nsc/transform/Erasure.scala
+++ b/src/compiler/scala/tools/nsc/transform/Erasure.scala
@@ -344,7 +344,7 @@ abstract class Erasure extends AddInterfaces
buf.toString
case RefinedType(parents, decls) =>
- boxedSig(intersectionDominator(parents))
+ jsig(intersectionDominator(parents), primitiveOK = primitiveOK)
case ClassInfoType(parents, _, _) =>
superSig(parents)
case AnnotatedType(_, atp) =>
diff --git a/test/files/run/t8756.check b/test/files/run/t8756.check
index 89337543bd..9b9dcafe7d 100644
--- a/test/files/run/t8756.check
+++ b/test/files/run/t8756.check
@@ -1,5 +1,5 @@
public Bippy<java.lang.Object> Test.f1(long)
-public Bippy<java.lang.Object> Test.f2(java.lang.Object)
+public Bippy<java.lang.Object> Test.f2(long)
public Bippy<java.lang.Object> Test.i1(Bippy<java.lang.Object>)
public Bippy<java.lang.Object> Test.i2(Bippy<java.lang.Object>)
public int Test.g1(long)