diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2012-09-09 16:59:43 +0200 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2012-09-09 18:20:01 +0200 |
commit | 24b0711f01dcb410ffd0454881f7a96073f92e16 (patch) | |
tree | da48f345062d67de9a6a344db556253d1d864bbc /test/files | |
parent | adf2d3632b07eef4fc2303aef994e66584a73f49 (diff) | |
download | scala-24b0711f01dcb410ffd0454881f7a96073f92e16.tar.gz scala-24b0711f01dcb410ffd0454881f7a96073f92e16.tar.bz2 scala-24b0711f01dcb410ffd0454881f7a96073f92e16.zip |
SI-6276 Warn on def or val that trivially loops infinitely
Diffstat (limited to 'test/files')
-rw-r--r-- | test/files/neg/override.check | 2 | ||||
-rwxr-xr-x | test/files/neg/override.scala | 2 | ||||
-rw-r--r-- | test/files/neg/t6276.check | 13 | ||||
-rw-r--r-- | test/files/neg/t6276.flags | 1 | ||||
-rw-r--r-- | test/files/neg/t6276.scala | 29 |
5 files changed, 45 insertions, 2 deletions
diff --git a/test/files/neg/override.check b/test/files/neg/override.check index fc152cb3b1..8be98bf4d0 100644 --- a/test/files/neg/override.check +++ b/test/files/neg/override.check @@ -1,5 +1,5 @@ override.scala:9: error: overriding type T in trait A with bounds >: Int <: Int; type T in trait B with bounds >: String <: String has incompatible type - lazy val x : A with B = x + lazy val x : A with B = {println(""); x} ^ one error found diff --git a/test/files/neg/override.scala b/test/files/neg/override.scala index 3e589b52e3..7975516061 100755 --- a/test/files/neg/override.scala +++ b/test/files/neg/override.scala @@ -6,7 +6,7 @@ trait X { trait Y extends X { trait B { type T >: String <: String } - lazy val x : A with B = x + lazy val x : A with B = {println(""); x} n = "foo" } diff --git a/test/files/neg/t6276.check b/test/files/neg/t6276.check new file mode 100644 index 0000000000..8bd92cf293 --- /dev/null +++ b/test/files/neg/t6276.check @@ -0,0 +1,13 @@ +t6276.scala:4: error: method a does nothing other than call itself recursively + def a: Any = a // warn + ^ +t6276.scala:5: error: value b does nothing other than call itself recursively + val b: Any = b // warn + ^ +t6276.scala:10: error: method a does nothing other than call itself recursively + def a: Any = a // warn + ^ +t6276.scala:19: error: method a does nothing other than call itself recursively + def a = a // warn + ^ +four errors found diff --git a/test/files/neg/t6276.flags b/test/files/neg/t6276.flags new file mode 100644 index 0000000000..85d8eb2ba2 --- /dev/null +++ b/test/files/neg/t6276.flags @@ -0,0 +1 @@ +-Xfatal-warnings diff --git a/test/files/neg/t6276.scala b/test/files/neg/t6276.scala new file mode 100644 index 0000000000..8333618964 --- /dev/null +++ b/test/files/neg/t6276.scala @@ -0,0 +1,29 @@ +object Test { + def foo(a: Int, b: Int, c: Int) { + new { + def a: Any = a // warn + val b: Any = b // warn + } + + def method { + // method local + def a: Any = a // warn + } + + trait T { + def a: Any + } + + new T { + // inherited return type + def a = a // warn + } + + // no warnings below + new { + def a: Any = {println(""); a} + val b: Any = {println(""); b} + def c(i: Int): Any = c(i - 0) + } + } +} |