For loops!

This commit is contained in:
Bob Nystrom
2013-12-24 21:04:11 -08:00
parent 1e0401bfc1
commit e6e7b2594c
18 changed files with 404 additions and 163 deletions
+10
View File
@@ -0,0 +1,10 @@
for (i in [1, 2, 3, 4, 5]) {
IO.write(i)
if (i > 2) break
IO.write(i)
}
// expect: 1
// expect: 1
// expect: 2
// expect: 2
// expect: 3
+20
View File
@@ -0,0 +1,20 @@
// Single-expression body.
for (i in [1, 2, 3]) IO.write(i)
// expect: 1
// expect: 2
// expect: 3
// Block body.
for (i in [1, 2, 3]) {
IO.write(i)
}
// expect: 1
// expect: 2
// expect: 3
// Newline after "for".
for
(i in [1, 2, 3]) IO.write(i)
// expect: 1
// expect: 2
// expect: 3
+11
View File
@@ -0,0 +1,11 @@
var list = []
for (i in [1, 2, 3]) {
list.add(fn IO.write(i))
//list.add(fn IO.write(i))
}
for (f in list) f.call
// expect: 1
// expect: 2
// expect: 3
+11
View File
@@ -0,0 +1,11 @@
var list = []
for (i in [1, 2, 3]) {
var j = i + 1
list.add(fn IO.write(j))
}
for (f in list) f.call
// expect: 2
// expect: 3
// expect: 4
+20
View File
@@ -0,0 +1,20 @@
// Single-expression body.
for (i in [1, 2, 3]) IO.write(i)
// expect: 1
// expect: 2
// expect: 3
// Block body.
for (i in [1, 2, 3]) {
IO.write(i)
}
// expect: 1
// expect: 2
// expect: 3
// Newline after "for".
for
(i in [1, 2, 3]) IO.write(i)
// expect: 1
// expect: 2
// expect: 3
+10
View File
@@ -0,0 +1,10 @@
var f = fn {
IO.write("evaluate sequence")
return [1, 2, 3]
}
for (i in f.call) IO.write(i)
// expect: evaluate sequence
// expect: 1
// expect: 2
// expect: 3
+13
View File
@@ -0,0 +1,13 @@
var list = []
var i = 1
while (i < 4) {
var j = i + 1
list.add(fn IO.write(j))
i = i + 1
}
for (f in list) f.call
// expect: 2
// expect: 3
// expect: 4
@@ -22,3 +22,5 @@ while
// expect: 1
// expect: 2
// expect: 3
// TODO: Close over variable in body.