summaryrefslogtreecommitdiff
path: root/test/files/neg
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2012-09-09 16:59:43 +0200
committerJason Zaugg <jzaugg@gmail.com>2012-09-09 18:20:01 +0200
commit24b0711f01dcb410ffd0454881f7a96073f92e16 (patch)
treeda48f345062d67de9a6a344db556253d1d864bbc /test/files/neg
parentadf2d3632b07eef4fc2303aef994e66584a73f49 (diff)
downloadscala-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/neg')
-rw-r--r--test/files/neg/override.check2
-rwxr-xr-xtest/files/neg/override.scala2
-rw-r--r--test/files/neg/t6276.check13
-rw-r--r--test/files/neg/t6276.flags1
-rw-r--r--test/files/neg/t6276.scala29
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)
+ }
+ }
+}