diff options
author | Martin Odersky <odersky@gmail.com> | 2014-12-19 18:56:03 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-12-19 18:56:09 +0100 |
commit | d21310b8baa847f1b0cd14986f8ec1084b59e6fe (patch) | |
tree | 90017842a48eeea9c68dbbe55ae73317b8c2133a /tests/pos/SI-7638a.scala | |
parent | cf6b62f11815fc98fe69e25875668c8709631656 (diff) | |
download | dotty-d21310b8baa847f1b0cd14986f8ec1084b59e6fe.tar.gz dotty-d21310b8baa847f1b0cd14986f8ec1084b59e6fe.tar.bz2 dotty-d21310b8baa847f1b0cd14986f8ec1084b59e6fe.zip |
Fix isUnboundedGeneric for alias types.
Fixes problem in test case SI-7638a.scala which gave an
override error before.
Diffstat (limited to 'tests/pos/SI-7638a.scala')
-rw-r--r-- | tests/pos/SI-7638a.scala | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/pos/SI-7638a.scala b/tests/pos/SI-7638a.scala new file mode 100644 index 000000000..060bd0ffa --- /dev/null +++ b/tests/pos/SI-7638a.scala @@ -0,0 +1,52 @@ +// Same as SI-7638, but without (Int) arguments to @specialized +package miniboxing.tests.compile + +trait Ordering[@specialized A] { + def eqv(x: Array[A], y: Array[A]): Boolean = false +} + +trait ArrayVectorOrder[@specialized A] extends Ordering[A] { + override def eqv(x: Array[A], y: Array[A]): Boolean = super.eqv(x, y) +} + +object vectorOrder { + implicit def arrayOrder[@specialized A](): miniboxing.tests.compile.ArrayVectorOrder[A] = + /* + * Before applying patch: + * + * while compiling: SI-7638.scala + * during phase: mixin + * library version: version 2.10.3-20130625-164027-d22e8d282c + * compiler version: version 2.10.3-20130627-153946-54cb6af7db + * reconstructed args: + * + * last tree to typer: TypeTree(class Array) + * symbol: class Array in package scala (flags: final) + * symbol definition: final class Array[T >: ? <: ?] extends Object + * tpe: Array[Int] + * symbol owners: class Array -> package scala + * context owners: anonymous class anon$1 -> package compile + * + * == Expanded type of tree == + * + * TypeRef( + * TypeSymbol(final class Array[T >: ? <: ?] extends Object) + * args = List(TypeRef(TypeSymbol(final abstract class Int extends ))) + * ) + * + * unhandled exception while transforming SI-7638.scala + * error: uncaught exception during compilation: java.lang.UnsupportedOperationException + * error: java.lang.UnsupportedOperationException: tail of empty list + * at scala.collection.immutable.Nil$.tail(List.scala:339) + * at scala.collection.immutable.Nil$.tail(List.scala:334) + * at scala.tools.nsc.transform.Mixin$$anonfun$scala$tools$nsc$transform$Mixin$$rebindSuper$1.apply(Mixin.scala:123) + * at scala.tools.nsc.transform.Mixin$$anonfun$scala$tools$nsc$transform$Mixin$$rebindSuper$1.apply(Mixin.scala:122) + * at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207) + * at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216) + * at scala.tools.nsc.Global.afterPickler(Global.scala:1104) + * at scala.tools.nsc.transform.Mixin.scala$tools$nsc$transform$Mixin$$rebindSuper(Mixin.scala:122) + * at scala.tools.nsc.transform.Mixin$$anonfun$scala$tools$nsc$transform$Mixin$$mixinTraitMembers$1$1.apply(Mixin.scala:339) + * at scala.tools.nsc.transform.Mixin$$anonfun$scala$tools$nsc$transform$Mixin$$mixinTraitMembers$1$1.apply(Mixin.scala:292) + */ + new ArrayVectorOrder[A] { } +} |