aboutsummaryrefslogtreecommitdiff
path: root/tests/run/t3877.scala
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run/t3877.scala')
-rw-r--r--tests/run/t3877.scala81
1 files changed, 81 insertions, 0 deletions
diff --git a/tests/run/t3877.scala b/tests/run/t3877.scala
new file mode 100644
index 000000000..5d8006f4f
--- /dev/null
+++ b/tests/run/t3877.scala
@@ -0,0 +1,81 @@
+object Test {
+ val LIMIT = 10
+
+ def test1: Unit = {
+ var d = 2
+ var i = 0 // avoid infinite loops
+ while (d < LIMIT && i < LIMIT) {
+ lazy val b = d + 1
+ d = b
+ i += 1
+ println("test1: " + d)
+ }
+ }
+
+ def test2: Unit = {
+ var d = 2
+ var i = 0
+ while (true) {
+ lazy val b = d + 1
+ d = b
+ i += 1
+ println("test2: " + d)
+
+ if (d >= LIMIT || i >= LIMIT)
+ return
+ }
+ }
+
+ def test3: Unit = {
+ var d = 2
+ var i = 0
+ do {
+ lazy val b = d + 1
+ d = b
+ i += 1
+ println("test3: " + d)
+ } while (d < LIMIT && i < LIMIT)
+ }
+
+ def test4: Unit = {
+ var d = 2
+ var i = 0
+ do {
+ lazy val b = d + 1
+ d = b
+ i += 1
+ println("test4: " + d)
+ if (d >= LIMIT || i >= LIMIT)
+ return
+ } while (true)
+ }
+
+ def test5: Unit = {
+ var d = 2
+ var i = 0
+ while (d < LIMIT && i < LIMIT) {
+ lazy val b = d + 1
+ d = b
+ i += 1
+ println("test5.1: " + d)
+
+ var e = 2
+ var j = 0
+ while (e < LIMIT && j < LIMIT) {
+ lazy val f = e + 1
+ e = f
+ j += 1
+ println("test5.2: " + e)
+ }
+ }
+ }
+
+
+ def main(args: Array[String]): Unit = {
+ test1
+ test2
+ test3
+ test4
+ test5
+ }
+}