summaryrefslogtreecommitdiff
path: root/test/files/pos
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2004-04-23 14:11:16 +0000
committerMartin Odersky <odersky@gmail.com>2004-04-23 14:11:16 +0000
commit92fcc53be94a107f3b560b855564bc39ba8f2372 (patch)
treec1b8e40ef4d21e18741b9f286d6e9047d39cc44e /test/files/pos
parentabe707d00a280e8f33cbc2a064cb970460c19d7d (diff)
downloadscala-92fcc53be94a107f3b560b855564bc39ba8f2372.tar.gz
scala-92fcc53be94a107f3b560b855564bc39ba8f2372.tar.bz2
scala-92fcc53be94a107f3b560b855564bc39ba8f2372.zip
*** empty log message ***
Diffstat (limited to 'test/files/pos')
-rwxr-xr-xtest/files/pos/orderedpoints.scala26
-rw-r--r--test/files/pos/viewtest3.scala59
2 files changed, 85 insertions, 0 deletions
diff --git a/test/files/pos/orderedpoints.scala b/test/files/pos/orderedpoints.scala
new file mode 100755
index 0000000000..145b0a8312
--- /dev/null
+++ b/test/files/pos/orderedpoints.scala
@@ -0,0 +1,26 @@
+class Point1(x: int) extends Object with Ordered[Point1] {
+ val xCoord = x;
+ def compareTo [b >: Point1 <% Ordered[b]](that: b): int = that match {
+ case that1: Point1 => this.xCoord.compareTo(that1.xCoord)
+ case _ => -that.compareTo(this)
+ }
+}
+class Point2(x: int, y: int) extends Point1(x) with Ordered[Point2] {
+ val yCoord = y;
+ def compareTo [b >: Point2 <% Ordered[b]](that: b): int = that match {
+ case that1: Point2 =>
+ val r = super.compareTo(that1);
+ if (r == 0) this.yCoord.compareTo(that1.yCoord) else r
+ case _ => -that.compareTo(this)
+ }
+}
+object Test with Application {
+ val p1 = new Point1(1);
+ val q1 = new Point1(2);
+ System.out.println(p1 < q1);
+ val p2 = new Point2(1, 2);
+ val q2 = new Point2(1, 3);
+ System.out.println(p2 < q2);
+ System.out.println(p1 < q2);
+ System.out.println(p2 < q1);
+}
diff --git a/test/files/pos/viewtest3.scala b/test/files/pos/viewtest3.scala
new file mode 100644
index 0000000000..dfed0dbf52
--- /dev/null
+++ b/test/files/pos/viewtest3.scala
@@ -0,0 +1,59 @@
+package testview;
+
+trait Tree[+a <% Ordered[a]] {
+ def insert[b >: a <% Ordered[b]](x: b): Tree[b];
+ def elements: List[a]
+}
+
+object Empty extends Tree[All] {
+ def insert[b >: All <% Ordered[b]](x: b): Tree[b] = new Node(x, Empty, Empty);
+ def elements: List[All] = List();
+}
+
+class Node[+a <% Ordered[a]](elem: a, l: Tree[a], r: Tree[a]) extends Tree[a] {
+ def insert[b >: a <% Ordered[b]](x: b): Tree[b] =
+ if (x == elem) this
+ else if (x < elem) new Node(elem, l insert x, r)
+ else new Node(elem, l, r insert x);
+ def elements: List[a] =
+ l.elements ::: List(elem) ::: r.elements
+}
+
+case class Str(elem: String) extends Ordered[Str] {
+ def compareTo[b >: Str <% Ordered[b]](that: b): int = that match {
+ case that1: Str => this.elem compareTo that1.elem
+ case _ => -(that compareTo this)
+ }
+}
+
+object Test {
+// import O.view;
+
+ private def toCharList(s: String): List[Char] =
+ if (s.length() == 0) List()
+ else s.charAt(0) :: toCharList(s.substring(1));
+
+ def main(args: Array[String]) = {
+ {
+ var t: Tree[String] = Empty;
+ for (val s <- args) {
+ t = t insert s
+ }
+ System.out.println(t.elements)
+ }
+ {
+ var t: Tree[Str] = Empty;
+ for (val s <- args) {
+ t = t insert Str(s)
+ }
+ System.out.println(t.elements)
+ }
+ {
+ var t: Tree[List[char]] = Empty;
+ for (val s <- args) {
+ t = t insert toCharList(s)
+ }
+ System.out.println(t.elements)
+ }
+ }
+}