From e11cac6ecc3c8791be3a37fc3b9f6837c9d46d23 Mon Sep 17 00:00:00 2001 From: Adriaan Moors Date: Fri, 20 Aug 2010 14:48:12 +0000 Subject: closes 2462. better implicit error messages. @implicitNotFound(msg="Custom error message that may refer to type parameters ${T} and ${U}") trait Constraint[T, U] whenever an implicit argument of type Constraint[A, B] cannot be found, the custom error message will be used, where the type arguments are interpolated in the obvious way note: if the msg in the annotation references non-existing type params, a warning is emitted the patch also cleans up annotation argument retrieval (moved it to AnnotationInfo from Symbol) review by odersky --- test/files/neg/t2462b.check | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 test/files/neg/t2462b.check (limited to 'test/files/neg/t2462b.check') diff --git a/test/files/neg/t2462b.check b/test/files/neg/t2462b.check new file mode 100644 index 0000000000..ac9563878c --- /dev/null +++ b/test/files/neg/t2462b.check @@ -0,0 +1,14 @@ +implicitNotFound_syntax.scala:6: warning: Invalid implicitNotFound message for trait Meh in package test: +The type parameters Too, Elem referenced in the message of the @implicitNotFound annotation are not defined by trait Meh. +trait Meh[-From, +To] + ^ +implicitNotFound_syntax.scala:9: warning: Invalid implicitNotFound message for trait Meh2 in package test: +The type parameter Elem referenced in the message of the @implicitNotFound annotation is not defined by trait Meh2. +trait Meh2[-From, +To] + ^ +implicitNotFound_syntax.scala:12: error: overriding method x in class thankyoupartest of type => Int; + method x needs `override' modifier +class testmustfail extends thankyoupartest { def x = 43 } + ^ +two warnings found +one error found -- cgit v1.2.3