diff options
author | Martin Odersky <odersky@gmail.com> | 2016-08-26 11:31:52 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-08-26 11:31:59 +0200 |
commit | e61ff6f4cfb632b11b7e54e2904706d382634eda (patch) | |
tree | df76b38a73dccdb52f0ebf7bb47f6e6afc989a28 | |
parent | 910aa4b4b6b1db98148566ca0b46e026fd5e312d (diff) | |
download | dotty-e61ff6f4cfb632b11b7e54e2904706d382634eda.tar.gz dotty-e61ff6f4cfb632b11b7e54e2904706d382634eda.tar.bz2 dotty-e61ff6f4cfb632b11b7e54e2904706d382634eda.zip |
Dependent method tests
-rw-r--r-- | tests/disabled/structural-type/pos/depmet_implicit_oopsla_zipwith.scala (renamed from tests/pending/pos/depmet_implicit_oopsla_zipwith.scala) | 0 | ||||
-rw-r--r-- | tests/pending/pos/depmet_implicit_norm_ret.scala | 9 | ||||
-rw-r--r-- | tests/pos/dependent-implicits.scala | 7 | ||||
-rw-r--r-- | tests/pos/t5070.scala | 15 |
4 files changed, 29 insertions, 2 deletions
diff --git a/tests/pending/pos/depmet_implicit_oopsla_zipwith.scala b/tests/disabled/structural-type/pos/depmet_implicit_oopsla_zipwith.scala index 83171f865..83171f865 100644 --- a/tests/pending/pos/depmet_implicit_oopsla_zipwith.scala +++ b/tests/disabled/structural-type/pos/depmet_implicit_oopsla_zipwith.scala diff --git a/tests/pending/pos/depmet_implicit_norm_ret.scala b/tests/pending/pos/depmet_implicit_norm_ret.scala index 85be750b4..42bfb9fe1 100644 --- a/tests/pending/pos/depmet_implicit_norm_ret.scala +++ b/tests/pending/pos/depmet_implicit_norm_ret.scala @@ -17,6 +17,8 @@ object Test{ } } + import ZipWith._ + trait ZipWith[S] { type T def zipWith : S => T = sys.error("") @@ -24,6 +26,9 @@ object Test{ // bug: inferred return type = (Stream[A]) => java.lang.Object with Test.ZipWith[B]{type T = Stream[B]}#T // this seems incompatible with vvvvvvvvvvvvvvvvvvvvvv -- #3731 - def map[A,B](f : A => B) /* : Stream[A] => Stream[B]*/ = ZipWith(f) - val tst: Stream[Int] = map{x: String => x.length}(Stream("a")) + def map1[A,B](f : A => B) = ZipWith(f)(SuccZipWith) // this typechecks but fails in -Ycheck:first + val tst1: Stream[Int] = map1[String, Int]{x: String => x.length}.apply(Stream("a")) + + def map2[A,B](f : A => B) = ZipWith(f) // this finds ZeroZipWith where scalac finds SuccZipWith and fails typechecking in the next line. + val tst2: Stream[Int] = map2{x: String => x.length}.apply(Stream("a")) } diff --git a/tests/pos/dependent-implicits.scala b/tests/pos/dependent-implicits.scala new file mode 100644 index 000000000..17a323112 --- /dev/null +++ b/tests/pos/dependent-implicits.scala @@ -0,0 +1,7 @@ +object Test { + trait T { type X; val x: X } + implicit def f(x: T): x.X = x.x + val t = new T { type X = String; val x = "" } + val x: String = t + val uy: String = f(t) +} diff --git a/tests/pos/t5070.scala b/tests/pos/t5070.scala new file mode 100644 index 000000000..410afba14 --- /dev/null +++ b/tests/pos/t5070.scala @@ -0,0 +1,15 @@ +trait A { + type T +} + +object O { + implicit def b(implicit x: A): x.T = error("") +} + +class Test { + import O._ + implicit val a: A = new A {} + implicitly[a.T] // works + + implicitly[a.T](b(a)) // works +} |