From f6467d063167da3a34ac92957d3a308d2a230926 Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Wed, 27 Aug 2014 01:18:52 +1000 Subject: SI-8823 Exclude specialized methods from extension method rewrite If a value class extends a specialized class, it can sprout specialized members after the specialization info transformer has run. However, we only install extension methods for class members we know about at the extmethods phase. This commit simply disables rewiring calls to these methods in erasure to an extention method. This follows the approach taken from super accessors. Note: value class type parameters themselves currently are not allowed to be specialized. --- test/files/run/t8823.scala | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 test/files/run/t8823.scala (limited to 'test') diff --git a/test/files/run/t8823.scala b/test/files/run/t8823.scala new file mode 100644 index 0000000000..0ac653566a --- /dev/null +++ b/test/files/run/t8823.scala @@ -0,0 +1,10 @@ +class Tuple2Int(val encoding: Long) extends AnyVal with Product2[Int, Int] { + def canEqual(that: Any) = false + def _1: Int = 1 + def _2: Int = 2 +} + +object Test extends App { + assert(new Tuple2Int(0)._1 == 1) + assert(new Tuple2Int(0)._2 == 2) +} -- cgit v1.2.3