aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorodersky <odersky@gmail.com>2016-03-18 11:16:50 +0100
committerodersky <odersky@gmail.com>2016-03-18 11:16:50 +0100
commitcdbc1631d1eda5a1a3eaa708b585a6a052852646 (patch)
tree060bc8fbe8d44ae9ba202f94fd98c9e7904180eb /tests
parent16f0bea7e4169ab89eddf2e7bae1de08ded3c84b (diff)
parent6c18e37886e90d217579112ccf867c22658273be (diff)
downloaddotty-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.scala11
-rw-r--r--tests/neg/tate.scala11
-rw-r--r--tests/pending/neg/tate.scala11
-rw-r--r--tests/pending/pos/lazyvals.scala18
-rw-r--r--tests/pos-scala2/rewrites.scala36
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]
+
+}
+