summaryrefslogtreecommitdiff
path: root/test/pending/pos/gosh.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-04-25 14:01:59 +0000
committerMartin Odersky <odersky@gmail.com>2006-04-25 14:01:59 +0000
commit88cd71a283f25b20414b1a22b9fded83692ffc14 (patch)
tree921d9a72ae56ac70d11ba1a58ee274cb8808a60d /test/pending/pos/gosh.scala
parent8e1da29a68f7d494a89a1922e3b30e39b245da63 (diff)
downloadscala-88cd71a283f25b20414b1a22b9fded83692ffc14.tar.gz
scala-88cd71a283f25b20414b1a22b9fded83692ffc14.tar.bz2
scala-88cd71a283f25b20414b1a22b9fded83692ffc14.zip
Diffstat (limited to 'test/pending/pos/gosh.scala')
-rwxr-xr-xtest/pending/pos/gosh.scala44
1 files changed, 44 insertions, 0 deletions
diff --git a/test/pending/pos/gosh.scala b/test/pending/pos/gosh.scala
new file mode 100755
index 0000000000..c4cd3df80b
--- /dev/null
+++ b/test/pending/pos/gosh.scala
@@ -0,0 +1,44 @@
+object ShapeTest extends Application {
+
+ class Point(x : int, y : int) {
+ override def toString() = "[" + x + "," + y + "]"
+ }
+
+ abstract class Shape {
+ def draw() : unit
+ }
+
+ class Line(s : Point, e : Point) extends Shape {
+ def draw() : unit = { Console.println("draw line " + s + "," + e) }
+ }
+
+ abstract class Foo {
+ type T <: Object
+
+ def show(o : T) : unit
+ def print() : unit = {Console.println("in Foo")}
+ }
+
+ abstract class ShapeFoo extends Foo {
+ type T <: Shape
+ def show(o : T) : unit = { o.draw() }
+ override def print() : unit = {Console.println("in ShapeFoo")}
+ }
+
+ class LineFoo extends ShapeFoo {
+ type T = Line
+ override def print() : unit = {Console.println("in LineFoo")}
+ }
+
+ val p1 = new Point(1,4)
+ val p2 = new Point(12, 28)
+
+ val l1 = new Line(p1, p2)
+
+
+ val l = new ShapeFoo{ // ** //
+ type T = Line // ** //
+ override def print() : unit = {Console.println("in LineFoo")} // ** //
+ }
+ l.show(l1) // ** //
+}