Skip to content

Commit 2f014f0

Browse files
authored
#3057. Add pattern assignment cases to C-style for tests (#3126)
Add pattern assignment cases to C-style for tests
1 parent b10a2b9 commit 2f014f0

14 files changed

+784
-44
lines changed

TypeSystem/flow-analysis/reachability_for_A01_t02.dart

Lines changed: 83 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,14 @@
1616
/// `C` is a definite assignment.
1717
/// @author [email protected]
1818
19+
class C {
20+
int v;
21+
C(this.v);
22+
}
23+
1924
test1() {
2025
int i;
21-
for (; (i = 42) < 0;) {
22-
}
26+
for (; (i = 42) < 0;) {}
2327
i; // Definitely assigned.
2428
}
2529

@@ -28,19 +32,94 @@ test2() {
2832
[
2933
for (; (i = 42) < 0;) 0
3034
];
31-
i; // Definitely assigned.
35+
i;
3236
}
3337

3438
test3() {
3539
int i;
3640
<int, int>{
3741
for (; (i = 42) < 0;) 0: 0
3842
};
39-
i; // Definitely assigned.
43+
i;
44+
}
45+
46+
test4() {
47+
int i;
48+
for (; ((i,) = (42,)) == 0;) {}
49+
i;
50+
}
51+
52+
test5() {
53+
int i;
54+
for (; ((x: i) = (x: 42)) == 0;) {}
55+
i;
56+
}
57+
58+
test6() {
59+
int i;
60+
for (; (C(v: i) = C(42)) == 0;) {}
61+
i;
62+
}
63+
64+
test7() {
65+
int i;
66+
[
67+
for (; ((i,) = (42,)) == 0;) 0
68+
];
69+
i;
70+
}
71+
72+
test8() {
73+
int i;
74+
[
75+
for (; ((x: i) = (x: 42)) == 0;) 0
76+
];
77+
i;
78+
}
79+
80+
test9() {
81+
int i;
82+
[
83+
for (; (C(v: i) = C(42)) == 0;) 0
84+
];
85+
i;
86+
}
87+
88+
test10() {
89+
int i;
90+
<int, int>{
91+
for (; ((i,) = (42,)) == 0;) 0: 0
92+
};
93+
i;
94+
}
95+
96+
test11() {
97+
int i;
98+
<int, int>{
99+
for (; ((x: i) = (x: 42)) == 0;) 0: 0
100+
};
101+
i;
102+
}
103+
104+
test12() {
105+
int i;
106+
<int, int>{
107+
for (; (C(v: i) = C(42)) == 0;) 0: 0
108+
};
109+
i;
40110
}
41111

42112
main() {
43113
test1();
44114
test2();
45115
test3();
116+
test4();
117+
test5();
118+
test6();
119+
test7();
120+
test8();
121+
test9();
122+
test10();
123+
test11();
124+
test12();
46125
}

TypeSystem/flow-analysis/reachability_for_A01_t03.dart

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@
1616
/// `before(C)`.
1717
/// @author [email protected]
1818
19+
class C {
20+
int v;
21+
C(this.v);
22+
}
23+
1924
test1() {
2025
int n;
2126
for (n = 42; n > 0;) { // n definitely assigned
@@ -39,8 +44,86 @@ test3() {
3944
};
4045
}
4146

47+
test4() {
48+
int n;
49+
for ((n,) = (42,); n > 0;) {
50+
break;
51+
}
52+
}
53+
54+
test5() {
55+
int n;
56+
for ((x: n) = (x: 42); n > 0;) {
57+
break;
58+
}
59+
}
60+
61+
test6() {
62+
int n;
63+
for (C(v: n) = C(42); n > 0;) {
64+
break;
65+
}
66+
}
67+
68+
test7() {
69+
int n;
70+
[
71+
for ((n,) = (42,); n < 0;)
72+
0
73+
];
74+
}
75+
76+
test8() {
77+
int n;
78+
[
79+
for ((x: n) = (x: 42); n < 0;)
80+
0
81+
];
82+
}
83+
84+
test9() {
85+
int n;
86+
[
87+
for (C(v: n) = C(42); n < 0;)
88+
0
89+
];
90+
}
91+
92+
test10() {
93+
int n;
94+
<int, int>{
95+
for ((n,) = (42,); n < 0;)
96+
0: 0
97+
};
98+
}
99+
100+
test11() {
101+
int n;
102+
<int, int>{
103+
for ((x: n) = (x: 42); n < 0;)
104+
0: 0
105+
};
106+
}
107+
108+
test12() {
109+
int n;
110+
<int, int>{
111+
for (C(v: n) = C(42); n < 0;)
112+
0: 0
113+
};
114+
}
115+
42116
main() {
43117
test1();
44118
test2();
45119
test3();
120+
test4();
121+
test5();
122+
test6();
123+
test7();
124+
test8();
125+
test9();
126+
test10();
127+
test11();
128+
test12();
46129
}

TypeSystem/flow-analysis/reachability_for_A01_t04.dart

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@
1515
/// that `assignedIn(U)` is detected by flow analysis.
1616
/// @author [email protected]
1717
18+
class C {
19+
int v;
20+
C(this.v);
21+
}
22+
1823
test1() {
1924
late int n;
2025
for (
@@ -63,8 +68,59 @@ test3() {
6368
};
6469
}
6570

71+
test4() {
72+
late int n;
73+
for (
74+
;
75+
() {
76+
if (1 > 2) {
77+
n; // possibly assigned
78+
}
79+
return true;
80+
}();
81+
(n,) = (42,)
82+
) {}
83+
}
84+
85+
test5() {
86+
late int n;
87+
[
88+
for (
89+
;
90+
() {
91+
if (1 > 2) {
92+
n;
93+
}
94+
return true;
95+
}();
96+
(x: n) = (x: 42)
97+
)
98+
0,
99+
];
100+
}
101+
102+
test6() {
103+
late int n;
104+
<int, int>{
105+
for (
106+
;
107+
() {
108+
if (1 > 2) {
109+
n;
110+
}
111+
return true;
112+
}();
113+
C(v: n) = C(42)
114+
)
115+
0: 0,
116+
};
117+
}
118+
66119
main() {
67120
print(test1);
68121
print(test2);
69122
print(test3);
123+
print(test4);
124+
print(test5);
125+
print(test6);
70126
}

TypeSystem/flow-analysis/reachability_for_A01_t05.dart

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@
1515
/// that `assignedIn(S)` is detected by flow analysis.
1616
/// @author [email protected]
1717
18+
class C {
19+
int v;
20+
C(this.v);
21+
}
22+
1823
test1() {
1924
late int n;
2025
for (
@@ -78,9 +83,77 @@ test4() {
7883
};
7984
}
8085

86+
test5() {
87+
late int n;
88+
for (
89+
;
90+
() {
91+
if (1 > 2) {
92+
n; // possibly assigned
93+
}
94+
return true;
95+
}();
96+
) {
97+
(n,) = (42,);
98+
}
99+
}
100+
101+
test6() {
102+
late int n;
103+
[
104+
for (
105+
;
106+
() {
107+
if (1 > 2) {
108+
n;
109+
}
110+
return true;
111+
}();
112+
)
113+
(x: n) = (x: 42),
114+
];
115+
}
116+
117+
test7() {
118+
late int n;
119+
<C, int>{
120+
for (
121+
;
122+
() {
123+
if (1 > 2) {
124+
n;
125+
}
126+
return true;
127+
}();
128+
)
129+
(C(v: n) = C(42)): 0,
130+
};
131+
}
132+
133+
test8() {
134+
late int n;
135+
<int, C>{
136+
for (
137+
;
138+
() {
139+
if (1 > 2) {
140+
n;
141+
}
142+
return true;
143+
}();
144+
)
145+
0: (C(v: n) = C(42)),
146+
};
147+
}
148+
149+
81150
main() {
82151
print(test1);
83152
print(test2);
84153
print(test3);
85154
print(test4);
155+
print(test5);
156+
print(test6);
157+
print(test7);
158+
print(test8);
86159
}

0 commit comments

Comments
 (0)