diff options
author | Paul Phillips <paulp@improving.org> | 2012-08-09 14:10:22 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-08-09 14:32:51 -0700 |
commit | eb2375cc5327293c708226e78f80a97cc780a12f (patch) | |
tree | 61a10ec88c12546ccf44dbe653fec42a8429d203 /test/files/pos/t2635.scala | |
parent | c0d5f0aaddc7bc309f84afd5d4f4b5c136c65816 (diff) | |
download | scala-eb2375cc5327293c708226e78f80a97cc780a12f.tar.gz scala-eb2375cc5327293c708226e78f80a97cc780a12f.tar.bz2 scala-eb2375cc5327293c708226e78f80a97cc780a12f.zip |
Warn when Any or AnyVal is inferred.
For the very small price of annotating types as Any/AnyVal in those
cases where we wish to use them, we can obtain useful warnings.
I made trunk clean against this warning and found several bugs
or at least suboptimalities in the process.
I put the warning behind -Xlint for the moment, but I think this
belongs on by default, even for this alone:
scala> List(1, 2, 3) contains "a"
<console>:8: warning: a type was inferred to be `Any`; this may indicate a programming error.
List(1, 2, 3) contains "a"
^
res0: Boolean = false
Or this punishment meted out by SI-4042:
scala> 1l to 5l contains 5
<console>:8: warning: a type was inferred to be `AnyVal`; this may indicate a programming error.
1l to 5l contains 5
^
res0: Boolean = false
A different situation where this arises, which I have seen variations
of many times:
scala> class A[T](default: T) {
def get(x: => Option[T]) = x getOrElse Some(default)
}
<console>:7: warning: a type was inferred to be `Any`; this may indicate a programming error.
class A[T](default: T) { def get(x: => Option[T]) = x getOrElse Some(default) }
^
// Oops, this was what I meant
scala> class A[T](default: T) {
def get(x: => Option[T]) = x getOrElse default
}
defined class A
Harder to avoid spurious warnings when "Object" is inferred.
Diffstat (limited to 'test/files/pos/t2635.scala')
0 files changed, 0 insertions, 0 deletions