Skip to content

Commit 751df72

Browse files
committed
Add run test
1 parent d6fc56a commit 751df72

File tree

3 files changed

+164
-1
lines changed

3 files changed

+164
-1
lines changed

tests/neg-strict/filtering-fors.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ object Test {
1616
for (case (x: String) <- xs; (y, z) <- xs) do () // error
1717
for ((x: String) <- xs; case (y, z) <- xs) do () // error
1818

19-
val pairs: List[Any] = List((1, 2), (3, 4))
19+
val pairs: List[Any] = List((1, 2), "hello", (3, 4))
2020
for ((x, y) <- pairs) yield (y, x) // error
2121

2222
for (case x: String <- xs) do () // OK

tests/run-custom-args/fors.check

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
2+
testOld
3+
1 2 3
4+
2
5+
2
6+
3
7+
1 2 3
8+
1 2 3
9+
0 1 2 3 4 5 6 7 8 9
10+
0 2 4 6 8
11+
0 2 4 6 8
12+
a b c
13+
b c
14+
b c
15+
16+
testNew
17+
3
18+
1 2 3
19+
1 2 3
20+
0 1 2 3 4 5 6 7 8 9
21+
0 2 4 6 8
22+
0 2 4 6 8
23+
0 2 4 6 8
24+
0 2 4 6 8
25+
0 2 4 6 8
26+
0 2 4 6 8
27+
0 2 4 6 8
28+
a b c
29+
30+
testFiltering
31+
hello world
32+
hello world
33+
hello world
34+
1~2 3~4
35+
(empty)
36+
hello world
37+
hello/1~2 hello/3~4 /1~2 /3~4 world/1~2 world/3~4
38+
(2,1) (4,3)
39+
hello world
40+
hello world
41+
hello world
42+
1~2 3~4
43+
(empty)
44+
hello world
45+
hello/1~2 hello/3~4 /1~2 /3~4 world/1~2 world/3~4
46+
(2,1) (4,3)

tests/run-custom-args/fors.scala

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
//############################################################################
2+
// for-comprehensions (old and new syntax)
3+
//############################################################################
4+
5+
//############################################################################
6+
7+
object Test extends dotty.runtime.LegacyApp {
8+
val xs = List(1, 2, 3)
9+
val ys = List(Symbol("a"), Symbol("b"), Symbol("c"))
10+
11+
def it = 0 until 10
12+
13+
val ar = "abc".toCharArray
14+
15+
/////////////////// old syntax ///////////////////
16+
17+
def testOld(): Unit = {
18+
println("\ntestOld")
19+
20+
// lists
21+
for (x <- xs) print(x + " "); println()
22+
for (x <- xs;
23+
if x % 2 == 0) print(x + " "); println()
24+
for {x <- xs
25+
if x % 2 == 0} print(x + " "); println()
26+
var n = 0
27+
for (_ <- xs) n += 1; println(n)
28+
for ((x, y) <- xs zip ys) print(x + " "); println()
29+
for (p @ (x, y) <- xs zip ys) print(p._1 + " "); println()
30+
31+
// iterators
32+
for (x <- it) print(x + " "); println()
33+
for (x <- it;
34+
if x % 2 == 0) print(x + " "); println()
35+
for {x <- it
36+
if x % 2 == 0} print(x + " "); println()
37+
38+
// arrays
39+
for (x <- ar) print(x + " "); println()
40+
for (x <- ar;
41+
if x.toInt > 97) print(x + " "); println()
42+
for {x <- ar
43+
if x.toInt > 97} print(x + " "); println()
44+
45+
}
46+
47+
/////////////////// new syntax ///////////////////
48+
49+
def testNew(): Unit = {
50+
println("\ntestNew")
51+
52+
// lists
53+
var n = 0
54+
for (_ <- xs) n += 1; println(n)
55+
for ((x, y) <- xs zip ys) print(x + " "); println()
56+
for (p @ (x, y) <- xs zip ys) print(p._1 + " "); println()
57+
58+
// iterators
59+
for (x <- it) print(x + " "); println()
60+
for (x <- it if x % 2 == 0) print(x + " "); println()
61+
for (x <- it; if x % 2 == 0) print(x + " "); println()
62+
for (x <- it;
63+
if x % 2 == 0) print(x + " "); println()
64+
for (x <- it
65+
if x % 2 == 0) print(x + " "); println()
66+
for {x <- it
67+
if x % 2 == 0} print(x + " "); println()
68+
for (x <- it;
69+
y = 2
70+
if x % y == 0) print(x + " "); println()
71+
for {x <- it
72+
y = 2
73+
if x % y == 0} print(x + " "); println()
74+
75+
// arrays
76+
for (x <- ar) print(x + " "); println()
77+
78+
}
79+
80+
/////////////////// filtering with case ///////////////////
81+
82+
def testFiltering(): Unit = {
83+
println("\ntestFiltering")
84+
85+
val xs: List[Any] = List((1, 2), "hello", (3, 4), "", "world")
86+
87+
for (case x: String <- xs) do print(s"$x "); println()
88+
for (case (x: String) <- xs) do print(s"$x "); println()
89+
for (case y@ (x: String) <- xs) do print(s"$y "); println()
90+
91+
for (case (x, y) <- xs) do print(s"$x~$y "); println()
92+
93+
for (case (x: String) <- xs if x.isEmpty) do print("(empty)"); println()
94+
for (case (x: String) <- xs; y = x) do print(s"$y "); println()
95+
for (case (x: String) <- xs; case (y, z) <- xs) do print(s"$x/$y~$z "); println()
96+
97+
for (case (x, y) <- xs) do print(s"${(y, x)} "); println()
98+
99+
for case x: String <- xs do print(s"$x "); println()
100+
for case (x: String) <- xs do print(s"$x "); println()
101+
for case y@ (x: String) <- xs do print(s"$y "); println()
102+
103+
for case (x, y) <- xs do print(s"$x~$y "); println()
104+
105+
for case (x: String) <- xs if x.isEmpty do print("(empty)"); println()
106+
for case (x: String) <- xs; y = x do print(s"$y "); println()
107+
for case (x: String) <- xs; case (y, z) <- xs do print(s"$x/$y~$z "); println()
108+
109+
for case (x, y) <- xs do print(s"${(y, x)} "); println()
110+
}
111+
112+
////////////////////////////////////////////////////
113+
114+
testOld()
115+
testNew()
116+
testFiltering()
117+
}

0 commit comments

Comments
 (0)