summaryrefslogtreecommitdiff
path: root/test/files/neg/reflection-names-neg.check
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-07-06 12:48:52 -0700
committerPaul Phillips <paulp@improving.org>2012-07-06 14:20:15 -0700
commit724b0dc71f1f8f91b995d01e9e027789f54ecdfe (patch)
tree5155c036949eb43d5bbb661bbbc5d18ffe3cc987 /test/files/neg/reflection-names-neg.check
parentc632aaca8bdf1dc7c8eac24f5dd0acb18b4683b6 (diff)
downloadscala-724b0dc71f1f8f91b995d01e9e027789f54ecdfe.tar.gz
scala-724b0dc71f1f8f91b995d01e9e027789f54ecdfe.tar.bz2
scala-724b0dc71f1f8f91b995d01e9e027789f54ecdfe.zip
Implicits to encourage more Name-dropping.
This creates implicits in cakes across the land from: String => TermName String => TypeName And also from: Name => NameOps[Name] // lower priority TermName => NameOps[TermName] TypeName => NameOps[TypeName] What this is all about, using "drop" as a motivating example, is that these should all work: "abc" drop 1 // "bc": String ("abc": TermName) drop 1 // "bc": TermName ("abc": TypeName) drop 1 // "bc": TypeName (("abc": TypeName): Name) drop 1 // "bc": Name But this should not: ("bc": Name) // ambiguity error This requires drop not being directly on Name; peer implicits from String => TermName and String => TypeName; implicit classes to install drop on TermName and TypeName; and a lower priority implicit class to allow ops on Names. Review by @xeno.by .
Diffstat (limited to 'test/files/neg/reflection-names-neg.check')
-rw-r--r--test/files/neg/reflection-names-neg.check10
1 files changed, 10 insertions, 0 deletions
diff --git a/test/files/neg/reflection-names-neg.check b/test/files/neg/reflection-names-neg.check
new file mode 100644
index 0000000000..a56a19e7fd
--- /dev/null
+++ b/test/files/neg/reflection-names-neg.check
@@ -0,0 +1,10 @@
+reflection-names-neg.scala:5: error: type mismatch;
+ found : String("abc")
+ required: reflect.runtime.universe.Name
+Note that implicit conversions are not applicable because they are ambiguous:
+ both method stringToTermName in trait Names of type (s: String)reflect.runtime.universe.TermName
+ and method stringToTypeName in trait Names of type (s: String)reflect.runtime.universe.TypeName
+ are possible conversion functions from String("abc") to reflect.runtime.universe.Name
+ val x2 = ("abc": Name) drop 1 // error
+ ^
+one error found