aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-08-26 11:31:52 +0200
committerMartin Odersky <odersky@gmail.com>2016-08-26 11:31:59 +0200
commite61ff6f4cfb632b11b7e54e2904706d382634eda (patch)
treedf76b38a73dccdb52f0ebf7bb47f6e6afc989a28
parent910aa4b4b6b1db98148566ca0b46e026fd5e312d (diff)
downloaddotty-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.scala9
-rw-r--r--tests/pos/dependent-implicits.scala7
-rw-r--r--tests/pos/t5070.scala15
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
+}