aboutsummaryrefslogtreecommitdiff
path: root/tests/untried/neg/gadts1.scala
diff options
context:
space:
mode:
authorSamuel Gruetter <samuel.gruetter@epfl.ch>2014-03-12 22:44:33 +0100
committerSamuel Gruetter <samuel.gruetter@epfl.ch>2014-03-12 22:44:33 +0100
commit9ef5f6817688f814a3450126aa7383b0928e80a0 (patch)
tree5727a2f7f7fd665cefdb312af2785c692f04377c /tests/untried/neg/gadts1.scala
parent194be919664447631ba55446eb4874979c908d27 (diff)
downloaddotty-9ef5f6817688f814a3450126aa7383b0928e80a0.tar.gz
dotty-9ef5f6817688f814a3450126aa7383b0928e80a0.tar.bz2
dotty-9ef5f6817688f814a3450126aa7383b0928e80a0.zip
add tests from scala/test/files/{pos,neg}
with explicit Unit return type
Diffstat (limited to 'tests/untried/neg/gadts1.scala')
-rw-r--r--tests/untried/neg/gadts1.scala33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/untried/neg/gadts1.scala b/tests/untried/neg/gadts1.scala
new file mode 100644
index 000000000..08403e6ee
--- /dev/null
+++ b/tests/untried/neg/gadts1.scala
@@ -0,0 +1,33 @@
+object Test{
+
+abstract class Number
+case class Int(n: scala.Int) extends Number
+case class Double(d: scala.Double) extends Number
+
+trait Term[+a]
+case class Cell[a](var x: a) extends Term[a]
+case class NumTerm(val n: Number) extends Term[Number]
+class IntTerm(n: Int) extends NumTerm(n) with Term[Int]
+
+
+def f[a](t:Term[a], c:Cell[a]): Unit = {
+ t match {
+ case NumTerm(n) => c.x = Double(1.0)
+ }
+ t match {
+ // presently testing that this gets past the parser: eventually
+ // it should actually work.
+ case Cell[a](x: Int) => c.x = 5
+ }
+}
+
+
+val x:Term[Number] = NumTerm(Int(5))
+
+def main(args: Array[String]): Unit = {
+ val cell = Cell[Int](Int(6))
+ Console.println(cell)
+ f[Int](new IntTerm(Int(5)), cell)
+ Console.println(cell)
+}
+}