diff options
author | Martin Odersky <odersky@gmail.com> | 2005-10-03 13:42:39 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2005-10-03 13:42:39 +0000 |
commit | 2994973970bcba6ff90d7788e79f2042cc11deaf (patch) | |
tree | b90fbfc9d5b12b01f2815edabb2f0eeb17655a94 /test | |
parent | 159a3633b593bf2b0a10f4f4e218489b2bba03bc (diff) | |
download | scala-2994973970bcba6ff90d7788e79f2042cc11deaf.tar.gz scala-2994973970bcba6ff90d7788e79f2042cc11deaf.tar.bz2 scala-2994973970bcba6ff90d7788e79f2042cc11deaf.zip |
*** empty log message ***
Diffstat (limited to 'test')
29 files changed, 224 insertions, 47 deletions
diff --git a/test/files/pos/MailBox.scala b/test/files/pos/MailBox.scala index 4e275cedbd..b1ea818f60 100644 --- a/test/files/pos/MailBox.scala +++ b/test/files/pos/MailBox.scala @@ -8,7 +8,7 @@ class MailBox { var next: LinkedList[a] = null; } - def insert[a](l: LinkedList[a], x: a): LinkedList[a] = { + private def insert[a](l: LinkedList[a], x: a): LinkedList[a] = { l.next = new LinkedList[a]; l.next.elem = x; l.next.next = l.next; @@ -32,7 +32,7 @@ class MailBox { r = r1; r1 = r1.next; } if (r1 != null) { - r.next = r1.next; r1.elem.msg = msg; r1.elem.notify; + r.next = r1.next; r1.elem.msg = msg; r1.elem.notify(); } else { lastSent = insert(lastSent, msg); } diff --git a/test/files/pos/S5.scala b/test/files/pos/S5.scala index 08f5b2a6eb..f0b66a6e68 100644 --- a/test/files/pos/S5.scala +++ b/test/files/pos/S5.scala @@ -16,7 +16,7 @@ abstract class M() { // module body of M } } -abstract class N() { +trait N { val _N: N = this; val n: _N.n = new _N.n(); val _M: M; @@ -26,5 +26,5 @@ abstract class N() { } } object O { - val system = new M() with N() {} + val system = new M() with N {} } diff --git a/test/files/pos/bug115.scala b/test/files/pos/bug115.scala index 970636f708..a250e3c090 100644 --- a/test/files/pos/bug115.scala +++ b/test/files/pos/bug115.scala @@ -3,7 +3,7 @@ class S[A](f: A => A, x: A) { } class T[B](f: B => B, y: B) extends S(x: B => f(x), y) { } -object Test with Application { +object Test extends Application { new T[Int](x => x * 2, 1); val f = new S(x: Int => x, 1); } diff --git a/test/files/pos/bug159.scala b/test/files/pos/bug159.scala index d6cdb97b47..ef6eba5255 100644 --- a/test/files/pos/bug159.scala +++ b/test/files/pos/bug159.scala @@ -3,7 +3,7 @@ object foo { // the problem seems to appear only // if "val _" is in the body of a case def cooked( ckd:StringBuffer ):Unit = - 'a'.match { + 'a' match { case '-' => val _ = ckd.append( '_' ); case 'v' => @@ -13,7 +13,7 @@ object foo { } object foo1 { def f():Unit = { - 1.match { + 1 match { case 2 => val _ = 1; case 3 => val _ = 2; case 4 => val _ = 2; diff --git a/test/files/pos/bug211.scala b/test/files/pos/bug211.scala index 6c5b73ec4a..8c5cf1dc1e 100644 --- a/test/files/pos/bug211.scala +++ b/test/files/pos/bug211.scala @@ -1,7 +1,7 @@ trait A; trait B; class Foo: (A with B) extends A with B; -object Test with Application { +object Test extends Application { new Foo(); System.out.println("bug211 completed"); } diff --git a/test/files/pos/bug245.scala b/test/files/pos/bug245.scala index 3e5dee820b..b33dd9914f 100644 --- a/test/files/pos/bug245.scala +++ b/test/files/pos/bug245.scala @@ -1,9 +1,9 @@ -class Value { - def coerce: Int = 0; -} +class Value {} object Test { + implicit def view(v: Value): int = 0; + def foo(i: Int): Int = 0; def fun0 : Value = null; diff --git a/test/files/pos/bug267.scala b/test/files/pos/bug267.scala index 3c220e5df1..d99b1fa1fc 100644 --- a/test/files/pos/bug267.scala +++ b/test/files/pos/bug267.scala @@ -17,7 +17,7 @@ trait Base { } } -object testBase extends Base with Application { +object testBase extends Application with Base { type exp = Exp; val term = new Num(2); System.out.println(term.eval); @@ -41,7 +41,7 @@ trait Show extends Base { trait Exp1 extends Exp { def show: String; } - class Num1(v: int): exp extends Num(v) with Exp1 { + class Num1(v: int): (exp with Num1) extends Num(v) with Exp1 { def show = value.toString(); } } @@ -49,7 +49,7 @@ trait Show extends Base { /** Operation extension: An extension of `BasePlus' with 'show' methods. */ trait ShowPlus extends BasePlus with Show { - class Plus1(l: exp, r: exp): exp extends Plus(l, r) with Exp1 { + class Plus1(l: exp, r: exp): (exp with Plus1) extends Plus(l, r) with Exp1 { def show = left.show + " + " + right.show } } diff --git a/test/files/pos/bug289.scala b/test/files/pos/bug289.scala index 18b4e74294..2fb91510d2 100644 --- a/test/files/pos/bug289.scala +++ b/test/files/pos/bug289.scala @@ -4,4 +4,4 @@ class A { object B; } -object C with A; +object C extends A; diff --git a/test/files/pos/bug342.scala b/test/files/pos/bug342.scala index f7e318e0a8..2e72ef220b 100644 --- a/test/files/pos/bug342.scala +++ b/test/files/pos/bug342.scala @@ -1,4 +1,4 @@ -object Main with Application { +object Main extends Application { //object Foo extends Enumeration { // 1: OK ! object Foo extends Enumeration(0, "Bar") { // 2 diff --git a/test/files/pos/bug348plus.scala b/test/files/pos/bug348plus.scala new file mode 100755 index 0000000000..45f49a33fe --- /dev/null +++ b/test/files/pos/bug348plus.scala @@ -0,0 +1,23 @@ +// bug #348 +trait Foo { + type bar <: this.Bar; + abstract class Bar; + case class Baz(r:bar) extends this.Bar; + case object NoBar extends this.Bar; +} +object Test extends Application { + object ConcreteFooBar extends Foo { // if moved to toplevel, it works + type bar = Bar; + } + def foo = { + import ConcreteFooBar._ ; + Baz( NoBar ) + } +} + +// bug #367 + +object Bla { + def foo(): Unit = (return null).equals(null); +} + diff --git a/test/files/pos/bug360.scala b/test/files/pos/bug360.scala index 53af1e8a1c..0fcb5cb161 100644 --- a/test/files/pos/bug360.scala +++ b/test/files/pos/bug360.scala @@ -3,7 +3,7 @@ abstract class Bug360A: Bug360C { def f: String = "hello"; } -abstract class Bug360B: Bug360C { +trait Bug360B: Bug360C { object d { System.out.println(f); } diff --git a/test/files/pos/bug361.scala b/test/files/pos/bug361.scala index 61de238f8b..f48c906246 100644 --- a/test/files/pos/bug361.scala +++ b/test/files/pos/bug361.scala @@ -1,6 +1,6 @@ // $Id$ -class Bug361Global with Bug361Trees; +class Bug361Global extends Bug361Trees; abstract class Bug361Trees: Bug361Global { diff --git a/test/files/pos/bug91.scala b/test/files/pos/bug91.scala index e05365caf4..54c821b41c 100644 --- a/test/files/pos/bug91.scala +++ b/test/files/pos/bug91.scala @@ -1,6 +1,6 @@ class Bug { def main(args: Array[String]) = { - var msg: String = _; // no bug if "null" instead of "_" + var msg: String = null; // no bug if "null" instead of "_" val f: PartialFunction[Any, unit] = { case 42 => msg = "coucou" }; } } diff --git a/test/files/pos/compile.scala b/test/files/pos/compile.scala index 3979c9737a..f7ada3193c 100644 --- a/test/files/pos/compile.scala +++ b/test/files/pos/compile.scala @@ -138,7 +138,7 @@ trait Test3A[T] { def fun: T = fun; } -class Test3B with Test3A[Test3Foo]; +class Test3B extends Test3A[Test3Foo]; trait Test3M extends Test3A[Test3Foo] { override def fun: Test3Foo = super.fun; diff --git a/test/files/pos/constfold.scala b/test/files/pos/constfold.scala index ef71285f72..2eb31b4086 100644 --- a/test/files/pos/constfold.scala +++ b/test/files/pos/constfold.scala @@ -5,7 +5,7 @@ object A { val s = "z is " + z; } -object Test with Application { +object Test extends Application { System.out.println(A.x); System.out.println(A.y); diff --git a/test/files/pos/failed.lst b/test/files/pos/failed.lst new file mode 100755 index 0000000000..b5b75eb35c --- /dev/null +++ b/test/files/pos/failed.lst @@ -0,0 +1,3 @@ +bug123.scala +exceptions.scala +context.scala diff --git a/test/files/pos/gui.scala b/test/files/pos/gui.scala index 27863f7368..b40759fb01 100644 --- a/test/files/pos/gui.scala +++ b/test/files/pos/gui.scala @@ -49,7 +49,7 @@ object GUI { def enable(b: Boolean): this.type; } - trait MouseCtl with Ctl { + trait MouseCtl extends Ctl { def mouseDown(p: Geom.Point): unit; } diff --git a/test/files/pos/matthias4.scala b/test/files/pos/matthias4.scala index bcda93746b..c6ce79d682 100644 --- a/test/files/pos/matthias4.scala +++ b/test/files/pos/matthias4.scala @@ -29,7 +29,7 @@ trait _a extends Object with _b { def setX(x: B.X): Unit; } } -abstract class a123() extends Object with _a with _b { +trait a123 extends Object with _a with _b { val a: this.type = this; val A: A = new A(); class A() extends AObject { @@ -67,13 +67,13 @@ trait _m { abstract class m() extends Object with _m with _b { val m: this.type = this; val M: M = new M(); - class M() extends MObject with a123() with Linker() { + class M() extends MObject with a123 with Linker { def test() = { val x: B.X = B.getX(); A.setX(x); } } - abstract class Linker() { + trait Linker { val b: m.this.b.type = m.this.b; val B: m.this.B.type = m.this.B; type B = m.this.B; diff --git a/test/files/pos/michel1.scala b/test/files/pos/michel1.scala index 2fc409b4e5..f930a682ef 100644 --- a/test/files/pos/michel1.scala +++ b/test/files/pos/michel1.scala @@ -4,6 +4,6 @@ class A[Ta] (a : Ta) { trait C {} -class B[Tb] (b : Tb) extends C with A[Tb] (b) { +class B[Tb] (b : Tb) extends A[Tb] (b) with C { def g = 2 } diff --git a/test/files/pos/mixins.scala b/test/files/pos/mixins.scala index 8d7e7dfa52..2b403a25e8 100644 --- a/test/files/pos/mixins.scala +++ b/test/files/pos/mixins.scala @@ -2,16 +2,21 @@ package mixins; abstract class Super { def foo: int; } -abstract class Mixin extends Super { +trait Mixin extends Super { abstract override def foo = super.foo; } -class Sub extends Super with Mixin { - override def foo: int = 1; +trait MixinSub extends Super with Mixin { + abstract override def foo: int = super.foo; } -abstract class Mixin1 extends Mixin { +trait MixinSubSub extends MixinSub { abstract override def foo = super.foo; } -abstract class Base0 extends Super with Mixin { +class Sub extends Super { + def foo: int = 1 } -class Base extends Sub with Mixin1 { +class Base extends Sub with MixinSubSub { + override def foo = super.foo; } +trait Mixin1 extends Sub with MixinSubSub {} +class Base1 extends Mixin1 {} + diff --git a/test/files/pos/nested.scala b/test/files/pos/nested.scala index e81b710d72..b038fce39d 100644 --- a/test/files/pos/nested.scala +++ b/test/files/pos/nested.scala @@ -12,11 +12,13 @@ class A(pa : Int) { } } -class M(x : Int) { +trait M { + val x : Int; def m1 = x } -class A1(x : Int) extends A(x) with M(x) { +class A1(x0 : Int) extends A(x0) with M { + val x = x0; class D() extends B(42) { val c2 = new C(66); class E() extends C(5) { diff --git a/test/files/pos/ok.lst b/test/files/pos/ok.lst new file mode 100755 index 0000000000..14184a7129 --- /dev/null +++ b/test/files/pos/ok.lst @@ -0,0 +1,138 @@ +304.scala
+A.scala
+List1.scala
+MailBox.scala
+S1.scala
+S3.scala
+S5.scala
+S8.scala
+X.scala
+Z.scala
+abstract.scala
+aliases.scala
+arrays2.scala
+attributes.scala
+bug082.scala
+bug1.scala
+bug115.scala
+bug116.scala
+bug119.scala
+bug121.scala
+bug124.scala
+bug151.scala
+bug159.scala
+bug160.scala
+bug17.scala
+bug175.scala
+bug177.scala
+bug183.scala
+bug193.scala
+bug2.scala
+bug20.scala
+bug201.scala
+bug204.scala
+bug210.scala
+bug211.scala
+bug229.scala
+bug245.scala
+bug267.scala
+bug287.scala
+bug289.scala
+bug29.scala
+bug295.scala
+bug30.scala
+bug304.scala
+bug31.scala
+bug318.scala
+bug32.scala
+bug342.scala
+bug348plus.scala
+bug359.scala
+bug36.scala
+bug360.scala
+bug361.scala
+bug372.scala
+bug39.scala
+bug49.scala
+bug53.scala
+bug54.scala
+bug61.scala
+bug64.scala
+bug66.scala
+bug68.scala
+bug69.scala
+bug76.scala
+bug81.scala
+bug91.scala
+bug93.scala
+cls.scala
+cls1.scala
+clsrefine.scala
+compile.scala
+compound.scala
+constfold.scala
+eta.scala
+expressions-current.scala
+gui.scala
+imports.scala
+infer.scala
+infer2.scala
+lambda.scala
+lambdalift.scala
+lambdalift1.scala
+localmodules.scala
+matthias1.scala
+matthias3.scala
+matthias4.scala
+matthias5.scala
+maxim1.scala
+michel1.scala
+michel2.scala
+michel3.scala
+michel4.scala
+michel5.scala
+michel6.scala
+mixins.scala
+modules.scala
+modules1.scala
+moduletrans.scala
+nested.scala
+null.scala
+orderedpoints.scala
+override.scala
+partialfun.scala
+patterns.scala
+patterns1.scala
+patterns2.scala
+patterns3.scala
+philippe1.scala
+philippe2.scala
+philippe3.scala
+philippe4.scala
+pmbug.scala
+propagate.scala
+rebind.scala
+refine.scala
+reftest.scala
+scoping1.scala
+scoping2.scala
+scoping3.scala
+seqtest2.scala
+simplelists.scala
+stable.scala
+strings.scala
+test1.scala
+test2.scala
+test4.scala
+test4a.scala
+test4refine.scala
+test5.scala
+test5refine.scala
+testcast.scala
+thistype.scala
+thistypes.scala
+traits.scala
+valdefs.scala
+viewtest1.scala
+viewtest2.scala
+viewtest3.scala
diff --git a/test/files/pos/orderedpoints.scala b/test/files/pos/orderedpoints.scala index 466ada1363..7e56a663fe 100755 --- a/test/files/pos/orderedpoints.scala +++ b/test/files/pos/orderedpoints.scala @@ -1,3 +1,5 @@ +package test; + class Point1(x: int) extends Object with Ordered[Point1] { val xCoord = x; def compareTo [b >: Point1 <% Ordered[b]](that: b): int = that match { @@ -5,7 +7,8 @@ class Point1(x: int) extends Object with Ordered[Point1] { case _ => -that.compareTo(this) } } -class Point2(x: int, y: int) extends Point1(x) with Ordered[Point2] { +class Point2(x: int, y: int) extends Point1(x) with Ordered[Point2] {} +/* val yCoord = y; override def compareTo [b >: Point2 <% Ordered[b]](that: b): int = that match { case that1: Point2 => @@ -14,7 +17,7 @@ class Point2(x: int, y: int) extends Point1(x) with Ordered[Point2] { case _ => -that.compareTo(this) } } -object Test with Application { +object Test extends Application { val p1 = new Point1(1); val q1 = new Point1(2); System.out.println(p1 < q1); @@ -24,3 +27,4 @@ object Test with Application { System.out.println(p1 < q2); System.out.println(p2 < q1); } +*/ diff --git a/test/files/pos/rebind.scala b/test/files/pos/rebind.scala index 59afe82ffa..3b7b27ac34 100644 --- a/test/files/pos/rebind.scala +++ b/test/files/pos/rebind.scala @@ -4,7 +4,7 @@ abstract class Foo { } def foo: Inner; } -abstract class Bar { +trait Bar { type Inner; def foo: Inner = foo; } diff --git a/test/files/pos/scoping1.scala b/test/files/pos/scoping1.scala index c9bc14b563..23daf024fe 100644 --- a/test/files/pos/scoping1.scala +++ b/test/files/pos/scoping1.scala @@ -1,4 +1,4 @@ -object This with Application { +object This extends Application { trait A { def foo(): unit; } diff --git a/test/files/pos/testcast.scala b/test/files/pos/testcast.scala index 15aa01ba72..631b2c922b 100644 --- a/test/files/pos/testcast.scala +++ b/test/files/pos/testcast.scala @@ -15,7 +15,7 @@ class B1 { } object C { - def view(x: A): B1 = null; + implicit def view(x: A): B1 = null; } object Test { import C.view; diff --git a/test/files/pos/viewtest1.scala b/test/files/pos/viewtest1.scala index e908e2acb9..0a59fdad58 100755 --- a/test/files/pos/viewtest1.scala +++ b/test/files/pos/viewtest1.scala @@ -5,13 +5,13 @@ trait Ordered[a] { } object O { - def view (x: String): Ordered[String] = new Ordered[String] { + implicit def view (x: String): Ordered[String] = new Ordered[String] { def < (y: String) = x.compareTo(y) < 0; } } object Empty extends Tree[All]; -case class Node[+c <% Ordered[c]](elem: c, l: Tree[c], r: Tree[c]) extends Tree[c]; +case class Node[c <% Ordered[c]](elem: c, l: Tree[c], r: Tree[c]) extends Tree[c]; trait Tree[+a <% Ordered[a]] { def insert[b >: a <% Ordered[b]](x: b): Tree[b] = this match { diff --git a/test/files/pos/viewtest2.scala b/test/files/pos/viewtest2.scala index 0d580418d0..1958696c1f 100755 --- a/test/files/pos/viewtest2.scala +++ b/test/files/pos/viewtest2.scala @@ -24,20 +24,20 @@ trait Ordered[+a] { object O { - def view (x: String): Ordered[String] = new Ordered[String] { + implicit def view1(x: String): Ordered[String] = new Ordered[String] { def compareTo [b >: String <% Ordered[b]](y: b): int = y match { case y1: String => x compareTo y1; case _ => -(y compareTo x) } } - def view (x: char): Ordered[char] = new Ordered[char] { + implicit def view2(x: char): Ordered[char] = new Ordered[char] { def compareTo [b >: char <% Ordered[b]](y: b): int = y match { case y1: char => x - y1; case _ => -(y compareTo x) } } - def view[a <% Ordered[a]](x: List[a]): Ordered[List[a]] = + implicit def view3[a <% Ordered[a]](x: List[a]): Ordered[List[a]] = new Ordered[List[a]] { def compareTo [b >: List[a] <% Ordered[b]](y: b): int = y match { case y1: List[a] => compareLists(x, y1); @@ -54,6 +54,8 @@ object O { } } } + + implicit def view4[a](x: a): a = x; } trait Tree[+a <% Ordered[a]] { @@ -66,7 +68,7 @@ object Empty extends Tree[All] { def elements: List[All] = List(); } -class Node[+a <% Ordered[a]](elem: a, l: Tree[a], r: Tree[a]) extends Tree[a] { +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) @@ -83,7 +85,7 @@ case class Str(elem: String) extends Ordered[Str] { } object Test { - import O.view; + import O._; private def toCharList(s: String): List[Char] = if (s.length() == 0) List() diff --git a/test/files/pos/viewtest3.scala b/test/files/pos/viewtest3.scala index dfed0dbf52..89e32e48a8 100644 --- a/test/files/pos/viewtest3.scala +++ b/test/files/pos/viewtest3.scala @@ -10,7 +10,7 @@ object Empty extends Tree[All] { def elements: List[All] = List(); } -class Node[+a <% Ordered[a]](elem: a, l: Tree[a], r: Tree[a]) extends Tree[a] { +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) |