From f9e5afd36a8a241abc86c80197d8fbe10488280e Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Fri, 20 Oct 2006 13:37:17 +0000 Subject: fixed problems in type patterns made some type error messages more precise --- test/files/neg/bug126.check | 4 ---- test/files/neg/bug126.scala | 8 -------- test/files/neg/escapes.check | 5 +++++ test/files/neg/escapes.scala | 6 ++++++ test/files/neg/gadts1.check | 7 +------ test/files/neg/viewtest.check | 7 ++++++- 6 files changed, 18 insertions(+), 19 deletions(-) delete mode 100644 test/files/neg/bug126.check delete mode 100644 test/files/neg/bug126.scala create mode 100644 test/files/neg/escapes.check create mode 100755 test/files/neg/escapes.scala (limited to 'test/files/neg') diff --git a/test/files/neg/bug126.check b/test/files/neg/bug126.check deleted file mode 100644 index 84a50aa821..0000000000 --- a/test/files/neg/bug126.check +++ /dev/null @@ -1,4 +0,0 @@ -bug126.scala:5 error: forward reference extends over definition of value foo2 - val Tuple1(foo2:(Any => Any)) = Tuple1((x:Any) => foo2(x)); - ^ -one error found diff --git a/test/files/neg/bug126.scala b/test/files/neg/bug126.scala deleted file mode 100644 index 75c10e608a..0000000000 --- a/test/files/neg/bug126.scala +++ /dev/null @@ -1,8 +0,0 @@ -class O { - val Bar:Any => Any = ((x:Any) => Bar(x)); - val Tuple2(foo:(Any => Any), bar) = Tuple2((x:Any) => foo(x), 1); - { - val Tuple1(foo2:(Any => Any)) = Tuple1((x:Any) => foo2(x)); - Console.println(foo2) - } -} diff --git a/test/files/neg/escapes.check b/test/files/neg/escapes.check new file mode 100644 index 0000000000..95299a4c75 --- /dev/null +++ b/test/files/neg/escapes.check @@ -0,0 +1,5 @@ +escapes.scala:2 error: type t escapes its defining scope as part of type t + def f(x: Any) = x match { case y: Cell[t] => y.elem } + ^ +subst type t to T +one error found diff --git a/test/files/neg/escapes.scala b/test/files/neg/escapes.scala new file mode 100755 index 0000000000..3a280e8d0a --- /dev/null +++ b/test/files/neg/escapes.scala @@ -0,0 +1,6 @@ +object Test { + def f(x: Any) = x match { case y: Cell[t] => y.elem } + class C3[T](val elem: T) + class D3[T](val elemD: T) extends C3[T](elemD) + def f[T](x: C3[T]) = x match { case d: D3[t] => d.elemD } +} diff --git a/test/files/neg/gadts1.check b/test/files/neg/gadts1.check index 8b3d6605ed..a761b79cb8 100644 --- a/test/files/neg/gadts1.check +++ b/test/files/neg/gadts1.check @@ -1,11 +1,6 @@ -gadts1.scala:15 error: type mismatch; - found : Test.this.NumTerm - required: Test.this.Term[a] - case NumTerm(n) => c.x = Double(1.0) - ^ gadts1.scala:15 error: type mismatch; found : Test.this.Double required: a case NumTerm(n) => c.x = Double(1.0) ^ -two errors found +one error found diff --git a/test/files/neg/viewtest.check b/test/files/neg/viewtest.check index b98b56bce5..044c3b7d91 100644 --- a/test/files/neg/viewtest.check +++ b/test/files/neg/viewtest.check @@ -1,7 +1,12 @@ +viewtest.scala:43 error: type mismatch; + found : scala.List[] + required: scala.List[] + case y1: List[a] => compareLists(x, y1) + ^ viewtest.scala:104 error: ambiguous implicit value: both method view4 in object O of type [a](a)a and method identity in object Predef of type [a](a)a match expected type (test.Str) => test.Ordered[test.Str] t = t insert Str(s) ^ -one error found +two errors found -- cgit v1.2.3