summaryrefslogtreecommitdiff
path: root/test/files/neg/check-dead.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2010-12-15 08:11:41 +0000
committerPaul Phillips <paulp@improving.org>2010-12-15 08:11:41 +0000
commit9f08c98a6e801d4798cb5c3794cab23deb6d9eec (patch)
tree239d2bde0c2c8b6bf9331387b8549e4be060a6a0 /test/files/neg/check-dead.scala
parent69aa78bd1bc593f878e44b2abde61dbb56391204 (diff)
downloadscala-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/files/neg/check-dead.scala')
-rw-r--r--test/files/neg/check-dead.scala55
1 files changed, 29 insertions, 26 deletions
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
+}
+