From 3049afc7ec7ca038dd8d68d26803c0733df01ee1 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Fri, 31 Mar 2006 10:36:49 +0000 Subject: fixed several old bugs --- test/files/neg/bug200.check | 4 ++++ test/files/neg/bug200.scala | 8 ++++++++ test/files/neg/bug343.check | 4 ++++ test/files/neg/bug343.scala | 12 ++++++++++++ test/files/neg/bug409.check | 4 ++++ test/files/neg/bug409.scala | 18 ++++++++++++++++++ test/files/neg/bug414.check | 9 +++++++++ test/files/neg/bug414.scala | 10 ++++++++++ test/files/neg/bug415.check | 4 ++++ test/files/neg/bug415.scala | 9 +++++++++ test/files/neg/bug418.check | 7 +++++++ test/files/neg/bug418.scala | 3 +++ test/files/neg/bug432.check | 4 ++++ test/files/neg/bug432.scala | 2 ++ test/files/neg/bug452.check | 6 ++++++ test/files/neg/bug452.scala | 8 ++++++++ test/files/neg/bug555.check | 4 ++++ test/files/neg/bug555.scala | 5 +++++ test/files/neg/bug556.check | 4 ++++ test/files/neg/bug556.scala | 4 ++++ test/files/neg/bug558.check | 4 ++++ test/files/neg/bug558.scala | 19 +++++++++++++++++++ test/files/pos/bug202.scala | 8 ++++++++ test/files/pos/bug247.scala | 25 +++++++++++++++++++++++++ 24 files changed, 185 insertions(+) create mode 100644 test/files/neg/bug200.check create mode 100644 test/files/neg/bug200.scala create mode 100644 test/files/neg/bug343.check create mode 100644 test/files/neg/bug343.scala create mode 100644 test/files/neg/bug409.check create mode 100644 test/files/neg/bug409.scala create mode 100644 test/files/neg/bug414.check create mode 100644 test/files/neg/bug414.scala create mode 100644 test/files/neg/bug415.check create mode 100644 test/files/neg/bug415.scala create mode 100644 test/files/neg/bug418.check create mode 100644 test/files/neg/bug418.scala create mode 100644 test/files/neg/bug432.check create mode 100644 test/files/neg/bug432.scala create mode 100644 test/files/neg/bug452.check create mode 100644 test/files/neg/bug452.scala create mode 100644 test/files/neg/bug555.check create mode 100644 test/files/neg/bug555.scala create mode 100644 test/files/neg/bug556.check create mode 100644 test/files/neg/bug556.scala create mode 100644 test/files/neg/bug558.check create mode 100644 test/files/neg/bug558.scala create mode 100644 test/files/pos/bug202.scala create mode 100644 test/files/pos/bug247.scala (limited to 'test/files') diff --git a/test/files/neg/bug200.check b/test/files/neg/bug200.check new file mode 100644 index 0000000000..d24d832b85 --- /dev/null +++ b/test/files/neg/bug200.check @@ -0,0 +1,4 @@ +bug200.scala:7 error: method foo is defined twice + def foo: Int; + ^ +one error found diff --git a/test/files/neg/bug200.scala b/test/files/neg/bug200.scala new file mode 100644 index 0000000000..692fe368e2 --- /dev/null +++ b/test/files/neg/bug200.scala @@ -0,0 +1,8 @@ +trait X { + def foo: Int; +} + +trait Y extends X { + def foo: String; + def foo: Int; +} diff --git a/test/files/neg/bug343.check b/test/files/neg/bug343.check new file mode 100644 index 0000000000..5ba5919650 --- /dev/null +++ b/test/files/neg/bug343.check @@ -0,0 +1,4 @@ +bug343.scala:5 error: private class Foo escapes its defining scope as part of type C.this.Foo + def get:Foo = new Foo(); + ^ +one error found diff --git a/test/files/neg/bug343.scala b/test/files/neg/bug343.scala new file mode 100644 index 0000000000..d04e1479f7 --- /dev/null +++ b/test/files/neg/bug343.scala @@ -0,0 +1,12 @@ +package scalaInner1; + +class C { + private class Foo {} + def get:Foo = new Foo(); +} + +object Test { + def main(args:Array[String]) = { + val c = new C().get; + } +} diff --git a/test/files/neg/bug409.check b/test/files/neg/bug409.check new file mode 100644 index 0000000000..6d596108fc --- /dev/null +++ b/test/files/neg/bug409.check @@ -0,0 +1,4 @@ +bug409.scala:6 error: `{' expected +class Toto extends Expr with Case1(12); + ^ +one error found diff --git a/test/files/neg/bug409.scala b/test/files/neg/bug409.scala new file mode 100644 index 0000000000..5dac2fdaa4 --- /dev/null +++ b/test/files/neg/bug409.scala @@ -0,0 +1,18 @@ +abstract class Expr; +case class Case1(x: Int) extends Expr; +case class Case2(x: Int) extends Expr; +case class Case3(x: Int) extends Expr; + +class Toto extends Expr with Case1(12); + +object Main { + def f(x: Expr): Int = x match { + case Case1(x) => x + case Case2(x) => x + case Case3(x) => x + } + + def main(args: Array[String]): Unit = { + Console.println(f(new Toto)); + } +} diff --git a/test/files/neg/bug414.check b/test/files/neg/bug414.check new file mode 100644 index 0000000000..dc6f636ff8 --- /dev/null +++ b/test/files/neg/bug414.check @@ -0,0 +1,9 @@ +bug414.scala:5 error: stable identifier required, but Empty found. + case Empty => + ^ +bug414.scala:7 error: type mismatch; + found : scala.Unit + required: a + case _ => + ^ +two errors found diff --git a/test/files/neg/bug414.scala b/test/files/neg/bug414.scala new file mode 100644 index 0000000000..3dff7f7b36 --- /dev/null +++ b/test/files/neg/bug414.scala @@ -0,0 +1,10 @@ +case class Empty[a] extends IntMap[a]; +case class Node[a](left: IntMap[a], keyVal: Pair[int, a], right: IntMap[a]) extends IntMap[a]; +abstract class IntMap[a] { + def lookup(key: int): a = this match { + case Empty => + error("clef inexistante") + case _ => + }; + +}; diff --git a/test/files/neg/bug415.check b/test/files/neg/bug415.check new file mode 100644 index 0000000000..7a7c5cf4f5 --- /dev/null +++ b/test/files/neg/bug415.check @@ -0,0 +1,4 @@ +bug415.scala:8 error: malformed type: A#T + val y: String = a.x; + ^ +one error found diff --git a/test/files/neg/bug415.scala b/test/files/neg/bug415.scala new file mode 100644 index 0000000000..355b6136d1 --- /dev/null +++ b/test/files/neg/bug415.scala @@ -0,0 +1,9 @@ +abstract class A { + type T <: String; + def x: T; +} + +abstract class B { + def a: A; + val y: String = a.x; +} diff --git a/test/files/neg/bug418.check b/test/files/neg/bug418.check new file mode 100644 index 0000000000..598d6666f5 --- /dev/null +++ b/test/files/neg/bug418.check @@ -0,0 +1,7 @@ +bug418.scala:2 error: not found: value Foo12340771 + null match { case Foo12340771.Bar(x) => x } + ^ +bug418.scala:2 error: not found: value x + null match { case Foo12340771.Bar(x) => x } + ^ +two errors found diff --git a/test/files/neg/bug418.scala b/test/files/neg/bug418.scala new file mode 100644 index 0000000000..67007010d4 --- /dev/null +++ b/test/files/neg/bug418.scala @@ -0,0 +1,3 @@ +object Test { + null match { case Foo12340771.Bar(x) => x } +} diff --git a/test/files/neg/bug432.check b/test/files/neg/bug432.check new file mode 100644 index 0000000000..e6fbd29579 --- /dev/null +++ b/test/files/neg/bug432.check @@ -0,0 +1,4 @@ +bug432.scala:2 error: Tata is already defined as case class Tata +object Tata +^ +one error found diff --git a/test/files/neg/bug432.scala b/test/files/neg/bug432.scala new file mode 100644 index 0000000000..8e3097ac9d --- /dev/null +++ b/test/files/neg/bug432.scala @@ -0,0 +1,2 @@ +case class Tata +object Tata diff --git a/test/files/neg/bug452.check b/test/files/neg/bug452.check new file mode 100644 index 0000000000..de484ef44b --- /dev/null +++ b/test/files/neg/bug452.check @@ -0,0 +1,6 @@ +bug452.scala:3 error: type mismatch; + found : Test + required: Test.this.Foo + def this() = this(this); + ^ +one error found diff --git a/test/files/neg/bug452.scala b/test/files/neg/bug452.scala new file mode 100644 index 0000000000..855406d0c4 --- /dev/null +++ b/test/files/neg/bug452.scala @@ -0,0 +1,8 @@ +object Test { + class Foo(x: Foo) { + def this() = this(this); + } + def main(args: Array[String]): Unit = { + new Foo(); + } +} diff --git a/test/files/neg/bug555.check b/test/files/neg/bug555.check new file mode 100644 index 0000000000..5bd0833217 --- /dev/null +++ b/test/files/neg/bug555.check @@ -0,0 +1,4 @@ +bug555.scala:4 error: block must end in result expression, not in definition + } + ^ +one error found diff --git a/test/files/neg/bug555.scala b/test/files/neg/bug555.scala new file mode 100644 index 0000000000..26dbe6cc0d --- /dev/null +++ b/test/files/neg/bug555.scala @@ -0,0 +1,5 @@ +object Main extends Application { + def tata = { + def titi = {} + } +} diff --git a/test/files/neg/bug556.check b/test/files/neg/bug556.check new file mode 100644 index 0000000000..39d9f50f85 --- /dev/null +++ b/test/files/neg/bug556.check @@ -0,0 +1,4 @@ +bug556.scala:3 error: wrong number of parameters; expected = 1 + def g:Int = f((x,y)=>x) + ^ +one error found diff --git a/test/files/neg/bug556.scala b/test/files/neg/bug556.scala new file mode 100644 index 0000000000..4f4e905fbb --- /dev/null +++ b/test/files/neg/bug556.scala @@ -0,0 +1,4 @@ +object Main extends Application { + def f(a:Int=>Int):Int = a(4) + def g:Int = f((x,y)=>x) +} diff --git a/test/files/neg/bug558.check b/test/files/neg/bug558.check new file mode 100644 index 0000000000..6587939731 --- /dev/null +++ b/test/files/neg/bug558.check @@ -0,0 +1,4 @@ +bug558.scala:13 error: value file is not a member of NewModel.this.RootURL + final val source = top.file; + ^ +one error found diff --git a/test/files/neg/bug558.scala b/test/files/neg/bug558.scala new file mode 100644 index 0000000000..f88471f776 --- /dev/null +++ b/test/files/neg/bug558.scala @@ -0,0 +1,19 @@ +package scala.tools.nsc.models; +import scala.tools.util._; + +abstract class NewModel { + abstract class SymbolURL { + val top : RootURL; + val name : String; + val source : AbstractFile; + } + abstract class NodeURL extends SymbolURL { + val parent : SymbolURL; + final val top = parent.top; + final val source = top.file; + + } + abstract class RootURL extends SymbolURL { + final val top : RootURL = this; + } +} diff --git a/test/files/pos/bug202.scala b/test/files/pos/bug202.scala new file mode 100644 index 0000000000..087e1ff5d2 --- /dev/null +++ b/test/files/pos/bug202.scala @@ -0,0 +1,8 @@ +trait C { + type T; + def f(x: T): unit; +} + +trait D extends C { + def f(x: T): unit = super.f(x); +} diff --git a/test/files/pos/bug247.scala b/test/files/pos/bug247.scala new file mode 100644 index 0000000000..bfd9d9694f --- /dev/null +++ b/test/files/pos/bug247.scala @@ -0,0 +1,25 @@ +class Order[t](less:(t,t) => Boolean,equal:(t,t) => Boolean) {} + +trait Map[A, B] extends scala.collection.Map[A, B] { + val factory:MapFactory[A] +} +abstract class MapFactory[A] { + def Empty[B]:Map[A,B]; +} + +class TreeMapFactory[KEY](newOrder:Order[KEY]) extends MapFactory[KEY] { + val order = newOrder; + def Empty[V] = new TreeMap[KEY,V](new TreeMapFactory[KEY](order)); +} + +class Tree[KEY,Entry](order:Order[KEY]) { + def size =0; +} + +class TreeMap[KEY,VALUE](_factory:TreeMapFactory[KEY]) extends Tree[KEY,Pair[KEY,VALUE]](_factory.order) with Map[KEY, VALUE] { + val factory = _factory + val order = _factory.order; + def this(newOrder:Order[KEY]) = this(new TreeMapFactory[KEY](newOrder)); + def get(key:KEY) = null; + def elements:Iterator[Pair[KEY,VALUE]] = null; +} -- cgit v1.2.3