diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/files/pos/infer.scala | 11 | ||||
-rw-r--r-- | test/files/pos/patterns.scala | 18 | ||||
-rw-r--r-- | test/pos/infer.scala | 11 | ||||
-rw-r--r-- | test/pos/patterns.scala | 18 |
4 files changed, 54 insertions, 4 deletions
diff --git a/test/files/pos/infer.scala b/test/files/pos/infer.scala new file mode 100644 index 0000000000..7e88585ae7 --- /dev/null +++ b/test/files/pos/infer.scala @@ -0,0 +1,11 @@ +module test { + class List[a] { + def ::(x: a): List[a] = new Cons(x, this); + } + case class Cons[a](x: a, xs: List[a]) extends List[a]; + case class Nil[a] extends List[a]; + def nil[a]: Nil[a] = new Nil[a]; + def cons[a](x: a, xs: List[a]): List[a] = null; + val x: List[Int] = Nil.::(1); + val y: List[Int] = nil.::(1); +}
\ No newline at end of file diff --git a/test/files/pos/patterns.scala b/test/files/pos/patterns.scala index 48c068c618..5680b093ef 100644 --- a/test/files/pos/patterns.scala +++ b/test/files/pos/patterns.scala @@ -1,6 +1,20 @@ trait Option[a] {} -case class Some[a](x: a) extends Option[a]; -case class None[a] extends Option[a]; +case class Some[a](x: a) extends Option[a] { + override def toString(): scala.String = "Some(" + x + ")"; + override def == (that: Any): Boolean = that match { + case Some(x) => this.x == x + case _ => false + } + override def hashCode(): scala.Int = getClass().hashCode() * 41 + x.hashCode(); +} +case class None[a] extends Option[a] { + override def toString(): scala.String = "None"; + override def == (that: Any) = that match { + case None => true + case _ => false + } + override def hashCode(): scala.Int = getClass().hashCode(); +} object test { diff --git a/test/pos/infer.scala b/test/pos/infer.scala new file mode 100644 index 0000000000..7e88585ae7 --- /dev/null +++ b/test/pos/infer.scala @@ -0,0 +1,11 @@ +module test { + class List[a] { + def ::(x: a): List[a] = new Cons(x, this); + } + case class Cons[a](x: a, xs: List[a]) extends List[a]; + case class Nil[a] extends List[a]; + def nil[a]: Nil[a] = new Nil[a]; + def cons[a](x: a, xs: List[a]): List[a] = null; + val x: List[Int] = Nil.::(1); + val y: List[Int] = nil.::(1); +}
\ No newline at end of file diff --git a/test/pos/patterns.scala b/test/pos/patterns.scala index 48c068c618..5680b093ef 100644 --- a/test/pos/patterns.scala +++ b/test/pos/patterns.scala @@ -1,6 +1,20 @@ trait Option[a] {} -case class Some[a](x: a) extends Option[a]; -case class None[a] extends Option[a]; +case class Some[a](x: a) extends Option[a] { + override def toString(): scala.String = "Some(" + x + ")"; + override def == (that: Any): Boolean = that match { + case Some(x) => this.x == x + case _ => false + } + override def hashCode(): scala.Int = getClass().hashCode() * 41 + x.hashCode(); +} +case class None[a] extends Option[a] { + override def toString(): scala.String = "None"; + override def == (that: Any) = that match { + case None => true + case _ => false + } + override def hashCode(): scala.Int = getClass().hashCode(); +} object test { |