From b350d209a20ebdf583d1dd2d3fdcd3be5073d2ef Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Sun, 13 Dec 2015 13:21:54 +0100 Subject: Perform variance adaptation only when needed in isSubType Previously adaptIfHK was performed on every type application. This made t3152 fail. We now do this only on demand, in isSubType. t3152 now passes again. But the change unmasked another error, which makes Iter2 fail to compile. --- tests/pending/pos/t3152.scala | 20 -------------------- tests/pos/t3152.scala | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 20 deletions(-) delete mode 100644 tests/pending/pos/t3152.scala create mode 100644 tests/pos/t3152.scala (limited to 'tests') diff --git a/tests/pending/pos/t3152.scala b/tests/pending/pos/t3152.scala deleted file mode 100644 index 3d1dcbd6f..000000000 --- a/tests/pending/pos/t3152.scala +++ /dev/null @@ -1,20 +0,0 @@ -trait Applicative[M[_]] - -sealed trait MA[M[_], A] { - def sequence[N[_], B](implicit a: A <:< N[B], n: Applicative[N]): N[M[B]] = sys.error("stub") - // def sequence3[N[_], B]()(implicit a: A <:< N[B], n: Applicative[N]): N[M[B]] = sys.error("stub") -} - -object test { - implicit def ListMA[A](l: List[A]): MA[List, A] = sys.error("stub") - implicit val ao: Applicative[Option] = sys.error("stub") - - /* This compiles OK: - (Nil: List[Option[Int]]).sequence3(): Option[List[Int]] - */ - - // BUG: error: immutable is not an enclosing class - // !!! No line number is reported with the error - (Nil: List[Option[Int]]).sequence: Option[List[Int]] - (List[Option[Int]]()).sequence: Option[List[Int]] -} diff --git a/tests/pos/t3152.scala b/tests/pos/t3152.scala new file mode 100644 index 000000000..3d1dcbd6f --- /dev/null +++ b/tests/pos/t3152.scala @@ -0,0 +1,20 @@ +trait Applicative[M[_]] + +sealed trait MA[M[_], A] { + def sequence[N[_], B](implicit a: A <:< N[B], n: Applicative[N]): N[M[B]] = sys.error("stub") + // def sequence3[N[_], B]()(implicit a: A <:< N[B], n: Applicative[N]): N[M[B]] = sys.error("stub") +} + +object test { + implicit def ListMA[A](l: List[A]): MA[List, A] = sys.error("stub") + implicit val ao: Applicative[Option] = sys.error("stub") + + /* This compiles OK: + (Nil: List[Option[Int]]).sequence3(): Option[List[Int]] + */ + + // BUG: error: immutable is not an enclosing class + // !!! No line number is reported with the error + (Nil: List[Option[Int]]).sequence: Option[List[Int]] + (List[Option[Int]]()).sequence: Option[List[Int]] +} -- cgit v1.2.3