Skip to content

Commit f38c72e

Browse files
authored
tests for prefer_final_in_for_each pattern support (#4291)
* tests for `prefer_final_in_for_each` pattern support * test fix
1 parent a7facd7 commit f38c72e

File tree

3 files changed

+79
-25
lines changed

3 files changed

+79
-25
lines changed

test/rules/all.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ import 'prefer_constructors_over_static_methods_test.dart'
9191
as prefer_constructors_over_static_methods;
9292
import 'prefer_contains_test.dart' as prefer_contains;
9393
import 'prefer_final_fields_test.dart' as prefer_final_fields;
94+
import 'prefer_final_in_for_each_test.dart' as prefer_final_in_for_each;
9495
import 'prefer_final_locals_test.dart' as prefer_final_locals;
9596
import 'prefer_final_parameters_test.dart' as prefer_final_parameters;
9697
import 'prefer_generic_function_type_aliases_test.dart'
@@ -206,6 +207,7 @@ void main() {
206207
prefer_constructors_over_static_methods.main();
207208
prefer_contains.main();
208209
prefer_final_fields.main();
210+
prefer_final_in_for_each.main();
209211
prefer_final_locals.main();
210212
prefer_final_parameters.main();
211213
prefer_generic_function_type_aliases.main();
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
import 'package:test_reflective_loader/test_reflective_loader.dart';
6+
7+
import '../rule_test_support.dart';
8+
9+
main() {
10+
defineReflectiveSuite(() {
11+
defineReflectiveTests(PreferFinalInForEachTestLanguage300);
12+
});
13+
}
14+
15+
@reflectiveTest
16+
class PreferFinalInForEachTestLanguage300 extends LintRuleTest {
17+
@override
18+
String get lintRule => 'prefer_final_in_for_each';
19+
20+
test_int() async {
21+
await assertDiagnostics(r'''
22+
f() {
23+
for (var i in [1, 2, 3]) { }
24+
}
25+
''', [
26+
lint(17, 1),
27+
]);
28+
}
29+
30+
test_int_final_ok() async {
31+
await assertNoDiagnostics(r'''
32+
f() {
33+
for (final i in [1, 2, 3]) { }
34+
}
35+
''');
36+
}
37+
38+
test_int_mutated_ok() async {
39+
await assertNoDiagnostics(r'''
40+
f() {
41+
for (var i in [1, 2, 3]) {
42+
i += 1;
43+
}
44+
}
45+
''');
46+
}
47+
48+
test_outOfLoopDeclaration_ok() async {
49+
await assertNoDiagnostics(r'''
50+
f() {
51+
int j;
52+
for (j in [1, 2, 3]) { }
53+
}
54+
''');
55+
}
56+
57+
@FailingTest(issue: 'https://github.com/dart-lang/linter/issues/4290')
58+
test_record() async {
59+
await assertDiagnostics(r'''
60+
f() {
61+
for (var (i, j) in [(1, 2)]) { }
62+
}
63+
''', [
64+
lint(13, 3),
65+
]);
66+
}
67+
68+
test_record_mutated_ok() async {
69+
await assertNoDiagnostics(r'''
70+
f() {
71+
for (var (int i, j) in [(1, 2)]) {
72+
i++;
73+
}
74+
}
75+
''');
76+
}
77+
}

test_data/rules/prefer_final_in_for_each.dart

Lines changed: 0 additions & 25 deletions
This file was deleted.

0 commit comments

Comments
 (0)