diff options
author | Paul Phillips <paulp@improving.org> | 2013-06-04 11:50:05 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2013-06-04 12:25:43 -0700 |
commit | 2f0e5ec1e96a6e4806841069736eda844d3a8dd6 (patch) | |
tree | 1a72792e2f08519f51e444e98eb19ffa2a855168 /test/files/neg/t4158.check | |
parent | 803d451a28824af17f0cab446e4c76f51003fd01 (diff) | |
download | scala-2f0e5ec1e96a6e4806841069736eda844d3a8dd6.tar.gz scala-2f0e5ec1e96a6e4806841069736eda844d3a8dd6.tar.bz2 scala-2f0e5ec1e96a6e4806841069736eda844d3a8dd6.zip |
SI-6899, prohibit dangerous, useless implicit conversions.
Increase eligibility requirements for implicit conversions,
such that T => U is ineligible if
T <: Null <or> AnyRef <: U
This has the salutary effect of allowing us to ditch 16
ridiculous implicits from Predef, since they existed solely
to work around the absence of this restriction.
There was one tiny impact on actual source code (one line
in one file) shown here, necessitated because the literal null
is not eligible to be implicitly converted to A via <:<.
def f[A](implicit ev: Null <:< A): A = null // before
def f[A](implicit ev: Null <:< A): A = ev(null) // after
As impositions go it's on the tame side.
Diffstat (limited to 'test/files/neg/t4158.check')
-rw-r--r-- | test/files/neg/t4158.check | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/test/files/neg/t4158.check b/test/files/neg/t4158.check index 3ee2627c5b..af281c52cd 100644 --- a/test/files/neg/t4158.check +++ b/test/files/neg/t4158.check @@ -1,19 +1,7 @@ -t4158.scala:3: error: type mismatch; - found : Null(null) - required: Int -Note that implicit conversions are not applicable because they are ambiguous: - both method Integer2intNullConflict in class LowPriorityImplicits of type (x: Null)Int - and method Integer2int in object Predef of type (x: Integer)Int - are possible conversion functions from Null(null) to Int +t4158.scala:3: error: an expression of type Null is ineligible for implicit conversion var y = null: Int ^ -t4158.scala:2: error: type mismatch; - found : Null(null) - required: Int -Note that implicit conversions are not applicable because they are ambiguous: - both method Integer2intNullConflict in class LowPriorityImplicits of type (x: Null)Int - and method Integer2int in object Predef of type (x: Integer)Int - are possible conversion functions from Null(null) to Int +t4158.scala:2: error: an expression of type Null is ineligible for implicit conversion var x: Int = null ^ two errors found |