Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit ee8eb0a

Browse files
author
Dart CI
committed
Version 2.14.0-67.0.dev
Merge commit 'c75ca5a6136c2018aa1254708d564f0d521efe69' into 'dev'
2 parents 6397e8b + c75ca5a commit ee8eb0a

File tree

8 files changed

+163
-281
lines changed

8 files changed

+163
-281
lines changed

.dart_tool/package_config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"constraint, update this by running tools/generate_package_config.dart."
1212
],
1313
"configVersion": 2,
14-
"generated": "2021-04-29T17:48:25.665083",
14+
"generated": "2021-04-30T12:11:55.367820",
1515
"generator": "tools/generate_package_config.dart",
1616
"packages": [
1717
{

CHANGELOG.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,11 @@ initializers containing async closures (issue [#45306][]).
223223
## 2.12.3 - 2021-04-14
224224

225225
This is a patch release that fixes a vulnerability in `dart:html` related to
226-
DOM clobbering. Thanks again to **Vincenzo di Cicco** for finding and reporting
227-
this vulnerability.
226+
DOM clobbering. See the [vulnerability advisory][CVE-2021-22540] for more
227+
details. Thanks again to **Vincenzo di Cicco** for finding and reporting this
228+
vulnerability.
229+
230+
[CVE-2021-22540]: https://github.com/dart-lang/sdk/security/advisories/GHSA-3rfv-4jvg-9522
228231

229232
## 2.12.2 - 2021-03-17
230233

DEPS

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ vars = {
114114
"glob_rev": "a62acf590598f458d3198d9f2930c1c9dd4b1379",
115115
"html_rev": "00cd3c22dac0e68e6ed9e7e4945101aedb1b3109",
116116
"http_io_rev": "2fa188caf7937e313026557713f7feffedd4978b",
117-
"http_multi_server_rev" : "7aca9e87d4a68374b685334f20359320054b8d7b",
117+
"http_multi_server_rev": "de1b312164c24a1690b46c6e97bd47eff40c4649",
118118
"http_parser_rev": "7720bfd42a0c096734c5213478fdce92c62f0293",
119119
"http_retry_rev": "845771af7bb5ab38ab740ce4a31f3b0c7680302b",
120120
"http_rev": "14e4fece54591436c1e3083df350b8e142067ae7",
@@ -170,7 +170,7 @@ vars = {
170170
"watcher_rev": "3924194385fb215cef483193ed2879a618a3d69c",
171171
"webdriver_rev": "ff5ccb1522edf4bed578ead4d65e0cbc1f2c4f02",
172172
"web_components_rev": "8f57dac273412a7172c8ade6f361b407e2e4ed02",
173-
"web_socket_channel_rev": "d3e100de8feb0283a04732366bb591ebd2282d7d",
173+
"web_socket_channel_rev": "6448ce532445a8a458fa191d9346df071ae0acad",
174174
"WebCore_rev": "fb11e887f77919450e497344da570d780e078bc8",
175175
"webkit_inspection_protocol_rev": "6b15729292d030f2e5c5861022da4c5a4c11961c",
176176
"yaml_rev": "b4c4411631bda556ce9a45af1ab0eecaf9f3ac53",

pkg/analyzer/test/src/dart/resolution/type_inference/statements_test.dart

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ import '../context_collection_resolution.dart';
88

99
main() {
1010
defineReflectiveSuite(() {
11-
defineReflectiveTests(AssertWithNullSafetyTest);
12-
defineReflectiveTests(DoWithNullSafetyTest);
13-
defineReflectiveTests(ForWithNullSafetyTest);
14-
defineReflectiveTests(IfWithNullSafetyTest);
15-
defineReflectiveTests(WhileWithNullSafetyTest);
11+
defineReflectiveTests(AssertTest);
12+
defineReflectiveTests(DoTest);
13+
defineReflectiveTests(ForTest);
14+
defineReflectiveTests(IfTest);
15+
defineReflectiveTests(WhileTest);
1616
});
1717
}
1818

1919
@reflectiveTest
20-
class AssertWithNullSafetyTest extends PubPackageResolutionTest {
20+
class AssertTest extends PubPackageResolutionTest {
2121
test_downward() async {
2222
await resolveTestCode('''
2323
void f() {
@@ -30,7 +30,7 @@ T a<T>() => throw '';
3030
}
3131

3232
@reflectiveTest
33-
class DoWithNullSafetyTest extends PubPackageResolutionTest {
33+
class DoTest extends PubPackageResolutionTest {
3434
test_downward() async {
3535
await resolveTestCode('''
3636
void f() {
@@ -43,8 +43,18 @@ T a<T>() => throw '';
4343
}
4444

4545
@reflectiveTest
46-
class ForWithNullSafetyTest extends PubPackageResolutionTest {
47-
test_awaitForIn_dynamic_downward() async {
46+
class ForTest extends PubPackageResolutionTest {
47+
test_awaitForIn_int_downward() async {
48+
await resolveTestCode('''
49+
void f() async {
50+
await for (int e in a()) {}
51+
}
52+
T a<T>() => throw '';
53+
''');
54+
assertInvokeType(findNode.methodInvocation('a('), 'Stream<int> Function()');
55+
}
56+
57+
test_awaitForIn_var_downward() async {
4858
await resolveTestCode('''
4959
void f() async {
5060
await for (var e in a()) {}
@@ -55,14 +65,15 @@ T a<T>() => throw '';
5565
findNode.methodInvocation('a('), 'Stream<Object?> Function()');
5666
}
5767

58-
test_awaitForIn_int_downward() async {
68+
test_awaitForIn_var_upward() async {
5969
await resolveTestCode('''
60-
void f() async {
61-
await for (int e in a()) {}
70+
void f(Stream<int> s) async {
71+
await for (var e in s) {
72+
e;
73+
}
6274
}
63-
T a<T>() => throw '';
6475
''');
65-
assertInvokeType(findNode.methodInvocation('a('), 'Stream<int> Function()');
76+
assertType(findNode.simple('e;'), 'int');
6677
}
6778

6879
test_for_downward() async {
@@ -96,10 +107,21 @@ T a<T>() => throw '';
96107
assertInvokeType(
97108
findNode.methodInvocation('a('), 'Iterable<int> Function()');
98109
}
110+
111+
test_forIn_var_upward() async {
112+
await resolveTestCode('''
113+
void f(List<int> s) async {
114+
for (var e in s) {
115+
e;
116+
}
117+
}
118+
''');
119+
assertType(findNode.simple('e;'), 'int');
120+
}
99121
}
100122

101123
@reflectiveTest
102-
class IfWithNullSafetyTest extends PubPackageResolutionTest {
124+
class IfTest extends PubPackageResolutionTest {
103125
test_downward() async {
104126
await resolveTestCode('''
105127
void f() {
@@ -112,7 +134,7 @@ T a<T>() => throw '';
112134
}
113135

114136
@reflectiveTest
115-
class WhileWithNullSafetyTest extends PubPackageResolutionTest {
137+
class WhileTest extends PubPackageResolutionTest {
116138
test_downward() async {
117139
await resolveTestCode('''
118140
void f() {

pkg/analyzer/test/src/diagnostics/for_in_of_invalid_element_type_test.dart

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,16 @@ main() {
1515

1616
@reflectiveTest
1717
class ForInOfInvalidElementTypeTest extends PubPackageResolutionTest {
18+
test_await_declaredVariable_dynamic() async {
19+
await assertNoErrorsInCode('''
20+
f(dynamic a) async {
21+
await for (int i in a) {
22+
i;
23+
}
24+
}
25+
''');
26+
}
27+
1828
test_await_declaredVariableWrongType() async {
1929
await assertErrorsInCode('''
2030
f(Stream<String> stream) async {
@@ -54,6 +64,16 @@ class Foo<T extends Iterable<int>> {
5464
]);
5565
}
5666

67+
test_declaredVariable_dynamic() async {
68+
await assertNoErrorsInCode('''
69+
f(dynamic a) {
70+
for (int i in a) {
71+
i;
72+
}
73+
}
74+
''');
75+
}
76+
5777
test_declaredVariable_interfaceTypeTypedef_ok() async {
5878
await assertNoErrorsInCode('''
5979
typedef S = String;

pkg/analyzer/test/src/diagnostics/for_in_of_invalid_type_test.dart

Lines changed: 96 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,76 @@ import '../dart/resolution/context_collection_resolution.dart';
1010
main() {
1111
defineReflectiveSuite(() {
1212
defineReflectiveTests(ForInOfInvalidTypeTest);
13-
defineReflectiveTests(ForInOfInvalidTypeWithNullSafetyTest);
13+
defineReflectiveTests(ForInOfInvalidTypeWithoutNullSafetyTest);
1414
});
1515
}
1616

1717
@reflectiveTest
1818
class ForInOfInvalidTypeTest extends PubPackageResolutionTest
19-
with ForInOfInvalidTypeTestCases, WithoutNullSafetyMixin {}
19+
with ForInOfInvalidTypeTestCases {
20+
test_awaitForIn_never() async {
21+
await assertErrorsInCode('''
22+
f(Never e) async {
23+
await for (var id in e) {
24+
id;
25+
}
26+
}
27+
''', [
28+
error(HintCode.DEAD_CODE, 32, 26),
29+
]);
30+
// TODO(scheglov) extract for-in resolution and implement
31+
// assertType(findNode.simple('id;'), 'Never');
32+
}
33+
34+
test_awaitForIn_object() async {
35+
await assertErrorsInCode('''
36+
f(Object e) async {
37+
await for (var id in e) {
38+
id;
39+
}
40+
}
41+
''', [
42+
error(CompileTimeErrorCode.FOR_IN_OF_INVALID_TYPE, 43, 1),
43+
]);
44+
}
45+
46+
test_forIn_interfaceTypeTypedef_iterable() async {
47+
await assertNoErrorsInCode('''
48+
typedef L = List<String>;
49+
f(L e) {
50+
for (var id in e) {
51+
id;
52+
}
53+
}
54+
''');
55+
}
56+
57+
test_forIn_never() async {
58+
await assertErrorsInCode('''
59+
f(Never e) {
60+
for (var id in e) {
61+
id;
62+
}
63+
}
64+
''', [
65+
error(HintCode.DEAD_CODE, 20, 26),
66+
]);
67+
// TODO(scheglov) extract for-in resolution and implement
68+
// assertType(findNode.simple('id;'), 'Never');
69+
}
70+
71+
test_forIn_object() async {
72+
await assertErrorsInCode('''
73+
f(Object e) async {
74+
for (var id in e) {
75+
id;
76+
}
77+
}
78+
''', [
79+
error(CompileTimeErrorCode.FOR_IN_OF_INVALID_TYPE, 37, 1),
80+
]);
81+
}
82+
}
2083

2184
mixin ForInOfInvalidTypeTestCases on PubPackageResolutionTest {
2285
test_awaitForIn_dynamic() async {
@@ -41,6 +104,29 @@ f(bool e) async {
41104
]);
42105
}
43106

107+
test_awaitForIn_streamOfDynamic() async {
108+
await assertNoErrorsInCode('''
109+
f(Stream<dynamic> e) async {
110+
await for (var id in e) {
111+
id;
112+
}
113+
}
114+
''');
115+
}
116+
117+
test_awaitForIn_streamOfDynamicSubclass() async {
118+
await assertNoErrorsInCode('''
119+
abstract class MyStream<T> extends Stream<T> {
120+
factory MyStream() => throw 0;
121+
}
122+
f(MyStream<dynamic> e) async {
123+
await for (var id in e) {
124+
id;
125+
}
126+
}
127+
''');
128+
}
129+
44130
test_forIn_dynamic() async {
45131
await assertNoErrorsInCode('''
46132
f(dynamic e) {
@@ -75,44 +161,25 @@ f(bool e) {
75161
}
76162

77163
@reflectiveTest
78-
class ForInOfInvalidTypeWithNullSafetyTest extends PubPackageResolutionTest
79-
with ForInOfInvalidTypeTestCases {
80-
test_awaitForIn_never() async {
81-
await assertErrorsInCode('''
82-
f(Never e) async {
164+
class ForInOfInvalidTypeWithoutNullSafetyTest extends PubPackageResolutionTest
165+
with ForInOfInvalidTypeTestCases, WithoutNullSafetyMixin {
166+
test_awaitForIn_object() async {
167+
await assertNoErrorsInCode('''
168+
f(Object e) async {
83169
await for (var id in e) {
84170
id;
85171
}
86172
}
87-
''', [
88-
error(HintCode.DEAD_CODE, 32, 26),
89-
]);
90-
// TODO(scheglov) extract for-in resolution and implement
91-
// assertType(findNode.simple('id;'), 'Never');
173+
''');
92174
}
93175

94-
test_forIn_interfaceTypeTypedef_iterable() async {
176+
test_forIn_object() async {
95177
await assertNoErrorsInCode('''
96-
typedef L = List<String>;
97-
f(L e) {
178+
f(Object e) async {
98179
for (var id in e) {
99180
id;
100181
}
101182
}
102183
''');
103184
}
104-
105-
test_forIn_never() async {
106-
await assertErrorsInCode('''
107-
f(Never e) {
108-
for (var id in e) {
109-
id;
110-
}
111-
}
112-
''', [
113-
error(HintCode.DEAD_CODE, 20, 26),
114-
]);
115-
// TODO(scheglov) extract for-in resolution and implement
116-
// assertType(findNode.simple('id;'), 'Never');
117-
}
118185
}

0 commit comments

Comments
 (0)