summaryrefslogtreecommitdiff
path: root/test/files/neg/no-implicit-to-anyref-any-val.check
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2014-01-27 10:29:28 +0100
committerJason Zaugg <jzaugg@gmail.com>2014-01-27 10:44:48 +0100
commit327eea839e97e1d7cac92aa9cd61e3338d12cb12 (patch)
tree27c96fc40658a947216b61fab6b6da4956c6cdbd /test/files/neg/no-implicit-to-anyref-any-val.check
parenta5b0fc49e517d1c63d22f9909ac9bed0552ed466 (diff)
downloadscala-327eea839e97e1d7cac92aa9cd61e3338d12cb12.tar.gz
scala-327eea839e97e1d7cac92aa9cd61e3338d12cb12.tar.bz2
scala-327eea839e97e1d7cac92aa9cd61e3338d12cb12.zip
Prohibit views targeting AnyVal
Library changes in Scala 2.10 mean that we are left with the unfortunate situation of admitting: scala> "": AnyVal res0: AnyVal = We already have explicit checks in place to prevent views targeting `AnyRef`. This commit balances this out by prohibiting `AnyVal`, as well. The enclosed test shows that this case is now prevented. If multiple implicits views are applicable, the ambiguity error is still raised; these check comes right at the end. Maybe that ought to be changed, but I don't think it matters too much. I've also disabled this prohibition under -Xsource:2.10.
Diffstat (limited to 'test/files/neg/no-implicit-to-anyref-any-val.check')
-rw-r--r--test/files/neg/no-implicit-to-anyref-any-val.check34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/files/neg/no-implicit-to-anyref-any-val.check b/test/files/neg/no-implicit-to-anyref-any-val.check
new file mode 100644
index 0000000000..5953e1bd6d
--- /dev/null
+++ b/test/files/neg/no-implicit-to-anyref-any-val.check
@@ -0,0 +1,34 @@
+no-implicit-to-anyref-any-val.scala:11: error: the result type of an implicit conversion must be more specific than AnyRef
+ 1: AnyRef
+ ^
+no-implicit-to-anyref-any-val.scala:17: error: type mismatch;
+ found : Any
+ required: AnyRef
+ (null: Any): AnyRef
+ ^
+no-implicit-to-anyref-any-val.scala:21: error: type mismatch;
+ found : AnyVal
+ required: AnyRef
+ (0: AnyVal): AnyRef
+ ^
+no-implicit-to-anyref-any-val.scala:27: error: type mismatch;
+ found : Test.AV
+ required: AnyRef
+Note that AV extends Any, not AnyRef.
+Such types can participate in value classes, but instances
+cannot appear in singleton types or in reference comparisons.
+ new AV(0): AnyRef
+ ^
+no-implicit-to-anyref-any-val.scala:30: error: the result type of an implicit conversion must be more specific than AnyVal
+ "": AnyVal
+ ^
+no-implicit-to-anyref-any-val.scala:32: error: type mismatch;
+ found : Object
+ required: AnyVal
+Note that implicit conversions are not applicable because they are ambiguous:
+ both method ArrowAssoc in object Predef of type [A](self: A)ArrowAssoc[A]
+ and method Ensuring in object Predef of type [A](self: A)Ensuring[A]
+ are possible conversion functions from Object to AnyVal
+ new Object() : AnyVal
+ ^
+6 errors found