diff options
author | odersky <odersky@gmail.com> | 2016-03-18 11:16:50 +0100 |
---|---|---|
committer | odersky <odersky@gmail.com> | 2016-03-18 11:16:50 +0100 |
commit | cdbc1631d1eda5a1a3eaa708b585a6a052852646 (patch) | |
tree | 060bc8fbe8d44ae9ba202f94fd98c9e7904180eb /tests | |
parent | 16f0bea7e4169ab89eddf2e7bae1de08ded3c84b (diff) | |
parent | 6c18e37886e90d217579112ccf867c22658273be (diff) | |
download | dotty-cdbc1631d1eda5a1a3eaa708b585a6a052852646.tar.gz dotty-cdbc1631d1eda5a1a3eaa708b585a6a052852646.tar.bz2 dotty-cdbc1631d1eda5a1a3eaa708b585a6a052852646.zip |
Merge pull request #1154 from dotty-staging/add-rewrite
First steps towards rewriting from Scala2 in dotty
Diffstat (limited to 'tests')
-rw-r--r-- | tests/neg/classOf.scala | 11 | ||||
-rw-r--r-- | tests/neg/tate.scala | 11 | ||||
-rw-r--r-- | tests/pending/neg/tate.scala | 11 | ||||
-rw-r--r-- | tests/pending/pos/lazyvals.scala | 18 | ||||
-rw-r--r-- | tests/pos-scala2/rewrites.scala | 36 |
5 files changed, 87 insertions, 0 deletions
diff --git a/tests/neg/classOf.scala b/tests/neg/classOf.scala new file mode 100644 index 000000000..e13cf71c4 --- /dev/null +++ b/tests/neg/classOf.scala @@ -0,0 +1,11 @@ +object Test { + + class C { type I } + type A = C + + def f1[T] = classOf[T] // error + def f2[T <: String] = classOf[T] // error + val x = classOf[Test.type] // error + val y = classOf[C { type I = String }] // error + val z = classOf[A] // ok +} diff --git a/tests/neg/tate.scala b/tests/neg/tate.scala new file mode 100644 index 000000000..acf7ee7e3 --- /dev/null +++ b/tests/neg/tate.scala @@ -0,0 +1,11 @@ + object unsound { + trait Bound[A, B <: A] + trait Bind[A] { + def bad[B <: A](bound: Bound[A, B], b: B) = b + } + def coerce[T, U](t: T): U = { + lazy val bound: Bound[U, _ >: T] = ??? // error: >: T does not conform to upper bound + def bind = new Bind[U] {} + bind.bad(bound, t) + } + } diff --git a/tests/pending/neg/tate.scala b/tests/pending/neg/tate.scala new file mode 100644 index 000000000..d626ccd3f --- /dev/null +++ b/tests/pending/neg/tate.scala @@ -0,0 +1,11 @@ +trait Out[+T] + +object Test { + + def foo[T <% AnyRef](x: T) = ??? + + var x: Out[_ >: String] = ??? + var y: Out[String] = ??? + x = y // should give error, but currently masked by covariant alias representation + // y = x +} diff --git a/tests/pending/pos/lazyvals.scala b/tests/pending/pos/lazyvals.scala new file mode 100644 index 000000000..93a82cd0c --- /dev/null +++ b/tests/pending/pos/lazyvals.scala @@ -0,0 +1,18 @@ + + +trait Iterator { + + def span() = { + val self: Int = 33 + class Leading { + def finish(): Unit = println("finished") + } + val leading = new Leading + + class Trailing { + @volatile lazy val it = leading.finish() + } + val trailing = new Trailing + (leading, trailing) + } +} diff --git a/tests/pos-scala2/rewrites.scala b/tests/pos-scala2/rewrites.scala new file mode 100644 index 000000000..3987821f1 --- /dev/null +++ b/tests/pos-scala2/rewrites.scala @@ -0,0 +1,36 @@ +trait Test { + + def baz() {} + + def bar() + + def foo() { + println("hi") + } + + lazy val x: Int +} + +object Test { + + lazy val x = 1 + + @deprecated lazy val y = 2 + + @deprecated private lazy val z = 2 + + lazy val (x1, y1) = (1, 2) + + @deprecated private lazy val (x2, y2) = (1, 2) + + val yy = x1 _ + val zz: () => Int = yy + +} + +class Stream[+A] { + + class Inner(x: A) extends Stream[A] + +} + |