diff options
author | Paul Phillips <paulp@improving.org> | 2010-12-15 08:11:41 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2010-12-15 08:11:41 +0000 |
commit | 9f08c98a6e801d4798cb5c3794cab23deb6d9eec (patch) | |
tree | 239d2bde0c2c8b6bf9331387b8549e4be060a6a0 /test | |
parent | 69aa78bd1bc593f878e44b2abde61dbb56391204 (diff) | |
download | scala-9f08c98a6e801d4798cb5c3794cab23deb6d9eec.tar.gz scala-9f08c98a6e801d4798cb5c3794cab23deb6d9eec.tar.bz2 scala-9f08c98a6e801d4798cb5c3794cab23deb6d9eec.zip |
Stops barking up the wrong tree with -Ywarn-dea...
Stops barking up the wrong tree with -Ywarn-dead-code. The origin of its
issues was twofold:
1) synchronized acts by-name without being by-name (ticket #4086) 2)
warnings are swallowed if context.reportGeneralErrors is false
Those two plus a dash of bitrot. In any case it's at its all time
happiest now. It found all the dead code related fixes in this commit.
Way to go, -Ywarn-dead-code! Review by odersky.
Diffstat (limited to 'test')
-rw-r--r-- | test/files/neg/check-dead.check | 16 | ||||
-rw-r--r-- | test/files/neg/check-dead.scala | 55 |
2 files changed, 40 insertions, 31 deletions
diff --git a/test/files/neg/check-dead.check b/test/files/neg/check-dead.check index be4de3060b..29601c1d4a 100644 --- a/test/files/neg/check-dead.check +++ b/test/files/neg/check-dead.check @@ -1,7 +1,13 @@ -check-dead.scala:27: error: dead code following this construct - throw new Exception +check-dead.scala:7: error: dead code following this construct + def z1 = y1(throw new Exception) // should warn + ^ +check-dead.scala:10: error: dead code following this construct + def z2 = y2(throw new Exception) // should warn + ^ +check-dead.scala:29: error: dead code following this construct + throw new Exception // should warn ^ -check-dead.scala:31: error: dead code following this construct - throw new Exception +check-dead.scala:33: error: dead code following this construct + throw new Exception // should warn ^ -two errors found +four errors found diff --git a/test/files/neg/check-dead.scala b/test/files/neg/check-dead.scala index 851e81d886..2d5bccb21d 100644 --- a/test/files/neg/check-dead.scala +++ b/test/files/neg/check-dead.scala @@ -1,34 +1,37 @@ -package dummy - -object Error { - def soSorry(msg: String = "sorry"): Nothing = - throw new Exception("we have a problem: "+msg) +object Other { + def oops(msg: String = "xxx"): Nothing = throw new Exception(msg) // should not warn } class NoDeads { - def x = synchronized { throw new Exception } - def y[T](arg: T) = println("foo") - def z = this.y(throw new Exception) - - def dummy1: Int = synchronized { - val i = 10 + 2 - return i - } - def dummy1b: Int = synchronized { - val i = 10 + 2 - i - } - - def dummy2: String = Error.soSorry("we're dummies") -} + def y1(arg: Any) = println("foo") + def z1 = y1(throw new Exception) // should warn + + def y2[T](arg: T) = println("foo") + def z2 = y2(throw new Exception) // should warn -class Deads { - def x1 = synchronized { - throw new Exception + def y3[T](arg: => T) = println("foo") + def z3 = y3(throw new Exception) // should not warn: by name arg + + def nowarn1 = synchronized { throw new Exception } // should not warn: synchronized should be by name + + def nowarn2: Int = synchronized { // should not warn + val i = 10 + 2 + return i + } + def nowarn3: Int = synchronized { // should not warn + val i = 10 + 2 + i + } + + def nowarn4: String = Other.oops("don't warn about me") // should not warn + + def yeswarn1 = synchronized { + throw new Exception // should warn 5 * 5 } - def x2: Int = synchronized { - throw new Exception + def yeswarn2: Int = synchronized { + throw new Exception // should warn return 5 } -}
\ No newline at end of file +} + |