enable lint prefer_final_in_for_each (#47724)
diff --git a/dev/bots/analyze.dart b/dev/bots/analyze.dart
index 1da0458..f4a703c 100644
--- a/dev/bots/analyze.dart
+++ b/dev/bots/analyze.dart
@@ -147,11 +147,11 @@
Future<void> verifyDeprecations(String workingDirectory, { int minimumMatches = 2000 }) async {
final List<String> errors = <String>[];
- for (File file in _allFiles(workingDirectory, 'dart', minimumMatches: minimumMatches)) {
+ for (final File file in _allFiles(workingDirectory, 'dart', minimumMatches: minimumMatches)) {
int lineNumber = 0;
final List<String> lines = file.readAsLinesSync();
final List<int> linesWithDeprecations = <int>[];
- for (String line in lines) {
+ for (final String line in lines) {
if (line.contains(_findDeprecationPattern) &&
!line.endsWith(_ignoreDeprecation) &&
!line.contains(_grandfatheredDeprecation)) {
@@ -239,7 +239,7 @@
assert(!license.endsWith('\n'));
final String licensePattern = license + '\n' + (trailingBlank ? '\n' : '');
final List<String> errors = <String>[];
- for (File file in _allFiles(workingDirectory, extension, minimumMatches: minimumMatches)) {
+ for (final File file in _allFiles(workingDirectory, extension, minimumMatches: minimumMatches)) {
final String contents = file.readAsStringSync().replaceAll('\r\n', '\n');
if (contents.isEmpty)
continue; // let's not go down the /bin/true rabbit hole
@@ -270,8 +270,8 @@
final List<String> errors = <String>[];
assert("// foo\nimport 'binding_test.dart' as binding;\n'".contains(_testImportPattern));
final List<File> dartFiles = _allFiles(path.join(workingDirectory, 'packages'), 'dart', minimumMatches: 1500).toList();
- for (File file in dartFiles) {
- for (String line in file.readAsLinesSync()) {
+ for (final File file in dartFiles) {
+ for (final String line in file.readAsLinesSync()) {
final Match match = _testImportPattern.firstMatch(line);
if (match != null && !_exemptTestImports.contains(match.group(2)))
errors.add(file.path);
@@ -365,7 +365,7 @@
final Map<String, List<File>> packageToRegistrants = <String, List<File>>{};
- for (File file in flutterRootDir.listSync(recursive: true).whereType<File>().where(_isGeneratedPluginRegistrant)) {
+ for (final File file in flutterRootDir.listSync(recursive: true).whereType<File>().where(_isGeneratedPluginRegistrant)) {
final String package = _getPackageFor(file, flutterRootDir);
final List<File> registrants = packageToRegistrants.putIfAbsent(package, () => <File>[]);
registrants.add(file);
@@ -373,16 +373,16 @@
final Set<String> outOfDate = <String>{};
- for (String package in packageToRegistrants.keys) {
+ for (final String package in packageToRegistrants.keys) {
final Map<File, String> fileToContent = <File, String>{};
- for (File f in packageToRegistrants[package]) {
+ for (final File f in packageToRegistrants[package]) {
fileToContent[f] = f.readAsStringSync();
}
await runCommand(flutter, <String>['inject-plugins'],
workingDirectory: package,
outputMode: OutputMode.discard,
);
- for (File registrant in fileToContent.keys) {
+ for (final File registrant in fileToContent.keys) {
if (registrant.readAsStringSync() != fileToContent[registrant]) {
outOfDate.add(registrant.path);
}
@@ -422,20 +422,20 @@
}
// Verify that the imports are well-ordered.
final Map<String, Set<String>> dependencyMap = <String, Set<String>>{};
- for (String directory in directories) {
+ for (final String directory in directories) {
dependencyMap[directory] = _findFlutterDependencies(path.join(srcPath, directory), errors, checkForMeta: directory != 'foundation');
}
assert(dependencyMap['material'].contains('widgets') &&
dependencyMap['widgets'].contains('rendering') &&
dependencyMap['rendering'].contains('painting')); // to make sure we're convinced _findFlutterDependencies is finding some
- for (String package in dependencyMap.keys) {
+ for (final String package in dependencyMap.keys) {
if (dependencyMap[package].contains(package)) {
errors.add(
'One of the files in the $yellow$package$reset package imports that package recursively.'
);
}
}
- for (String package in dependencyMap.keys) {
+ for (final String package in dependencyMap.keys) {
final List<String> loop = _deepSearch<String>(dependencyMap, package);
if (loop != null) {
errors.add(
@@ -459,7 +459,7 @@
Future<void> verifyNoBadImportsInFlutterTools(String workingDirectory) async {
final List<String> errors = <String>[];
final List<File> files = _allFiles(path.join(workingDirectory, 'packages', 'flutter_tools', 'lib'), 'dart', minimumMatches: 200).toList();
- for (File file in files) {
+ for (final File file in files) {
if (file.readAsStringSync().contains('package:flutter_tools/')) {
errors.add('$yellow${file.path}$reset imports flutter_tools.');
}
@@ -535,7 +535,7 @@
.where((File file) => path.extension(file.path) != '.jar')
.toList();
final List<String> problems = <String>[];
- for (File file in files) {
+ for (final File file in files) {
final List<String> lines = file.readAsLinesSync();
for (int index = 0; index < lines.length; index += 1) {
if (lines[index].endsWith(' ')) {
@@ -1004,7 +1004,7 @@
.map<File>((String filename) => File(path.join(workingDirectory, filename)))
.toList();
final List<String> problems = <String>[];
- for (File file in files) {
+ for (final File file in files) {
final Uint8List bytes = file.readAsBytesSync();
try {
utf8.decode(bytes);
@@ -1156,7 +1156,7 @@
return _allFiles(srcPath, 'dart', minimumMatches: 1)
.map<Set<String>>((File file) {
final Set<String> result = <String>{};
- for (String line in file.readAsLinesSync()) {
+ for (final String line in file.readAsLinesSync()) {
Match match = _importPattern.firstMatch(line);
if (match != null)
result.add(match.group(2));
@@ -1180,7 +1180,7 @@
}
List<T> _deepSearch<T>(Map<T, Set<T>> map, T start, [ Set<T> seen ]) {
- for (T key in map[start]) {
+ for (final T key in map[start]) {
if (key == start)
continue; // we catch these separately
if (seen != null && seen.contains(key))