From 72d12aabf35f699ef103d79f29f8f7b21286d94c Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Fri, 26 Nov 2010 23:53:26 +0000 Subject: Some work on error messages, somewhat based on ... Some work on error messages, somewhat based on ideas in #3092. No review. --- test/files/neg/predef-masking.check | 4 ++++ test/files/neg/predef-masking.scala | 21 +++++++++++++++++++++ test/files/neg/type-diagnostics.check | 6 +++++- test/files/neg/type-diagnostics.scala | 4 ++++ test/pending/neg/type-diagnostics.scala | 11 +++++++++++ 5 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 test/files/neg/predef-masking.check create mode 100644 test/files/neg/predef-masking.scala create mode 100644 test/pending/neg/type-diagnostics.scala (limited to 'test') diff --git a/test/files/neg/predef-masking.check b/test/files/neg/predef-masking.check new file mode 100644 index 0000000000..79e4dece8a --- /dev/null +++ b/test/files/neg/predef-masking.check @@ -0,0 +1,4 @@ +predef-masking.scala:7: error: value + is not a member of type parameter T + def f[T](x: T) = x + 5 + ^ +one error found diff --git a/test/files/neg/predef-masking.scala b/test/files/neg/predef-masking.scala new file mode 100644 index 0000000000..67b69aa169 --- /dev/null +++ b/test/files/neg/predef-masking.scala @@ -0,0 +1,21 @@ +// Testing predef masking +import Predef.{ any2stringadd => _, _ } + +object StringPlusConfusion { + // Would love to do something about this error message, but by the + // time we get our hands on it the context is lost. + def f[T](x: T) = x + 5 + + // After we block out any2stringadd, the error is: + // + // work/a.scala:7: error: value + is not a member of type parameter T + // def f[T](x: T) = x + 5 + // ^ + // Normally, it is: + // + // work/a.scala:7: error: type mismatch; + // found : Int(5) + // required: String + // def f[T](x: T) = x + 5 + // ^ +} diff --git a/test/files/neg/type-diagnostics.check b/test/files/neg/type-diagnostics.check index 33e07f3816..62d580a788 100644 --- a/test/files/neg/type-diagnostics.check +++ b/test/files/neg/type-diagnostics.check @@ -13,4 +13,8 @@ type-diagnostics.scala:17: error: type mismatch; required: java.lang.String def f2[String](s: String) = strings(List(s)) ^ -three errors found +type-diagnostics.scala:21: error: missing parameter type for expanded function +(see SLS 8.5, "Pattern Matching Anonymous Functions") + val f = { case 5 => 10 } + ^ +four errors found diff --git a/test/files/neg/type-diagnostics.scala b/test/files/neg/type-diagnostics.scala index fdc0978138..fcc49812f4 100644 --- a/test/files/neg/type-diagnostics.scala +++ b/test/files/neg/type-diagnostics.scala @@ -16,3 +16,7 @@ object TParamConfusion { def f2[String](s: String) = strings(List(s)) } + +object PartialInfer { + val f = { case 5 => 10 } +} \ No newline at end of file diff --git a/test/pending/neg/type-diagnostics.scala b/test/pending/neg/type-diagnostics.scala new file mode 100644 index 0000000000..7f9a151dcd --- /dev/null +++ b/test/pending/neg/type-diagnostics.scala @@ -0,0 +1,11 @@ +object TooManyParens { + def f = Map(1 -> 2).keySet() + // + // Confusion reigns! + // + // work/a.scala:27: error: not enough arguments for method apply: (elem: Int)Boolean in trait SetLike. + // Unspecified value parameter elem. + // def f = Map(1 -> 2).keySet() + // ^ + +} -- cgit v1.2.3