migrate to lintProducerMap2
Change-Id: I90b41091b354f02e84772e797257bf20db404f30
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192949
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
diff --git a/pkg/analysis_server/lib/src/services/correction/assist_internal.dart b/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
index d304168..9b819f0 100644
--- a/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
@@ -297,10 +297,12 @@
/// being offered as a fix.
static Map<ProducerGenerator, Set<String>> createLintRuleMap() {
var map = <ProducerGenerator, Set<String>>{};
- for (var entry in FixProcessor.lintProducerMap.entries) {
+ for (var entry in FixProcessor.lintProducerMap2.entries) {
var lintName = entry.key;
- for (var generator in entry.value) {
- map.putIfAbsent(generator, () => <String>{}).add(lintName);
+ for (var fix in entry.value) {
+ for (var generator in fix.generators) {
+ map.putIfAbsent(generator, () => <String>{}).add(lintName);
+ }
}
}
return map;
diff --git a/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart b/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
index ac275c3..d6caedd 100644
--- a/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
+++ b/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
@@ -28,6 +28,7 @@
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
import 'package:analyzer_plugin/utilities/change_builder/conflicting_edit_exception.dart';
import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+import 'package:collection/collection.dart';
/// A fix producer that produces changes that will fix multiple diagnostics in
/// one or more files.
@@ -233,7 +234,7 @@
if (fix.canBeBulkApplied) {
final generators = fix.generators;
if (generators != null) {
- yield* generators.map((g) => g().fixKind).where((k) => k != null);
+ yield* generators.map((g) => g().fixKind).whereNotNull();
}
}
}
@@ -245,7 +246,7 @@
if (fix.canBeBulkApplied) {
final generators = fix.generators;
if (generators != null) {
- yield* generators.map((g) => g().fixKind).where((k) => k != null);
+ yield* generators.map((g) => g().fixKind).whereNotNull();
}
}
}
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index 9a4b783..e2bde24 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -1080,6 +1080,7 @@
/// A map from the names of lint rules to a list of generators used to create
/// the correction producers used to build fixes for those diagnostics. The
/// generators used for non-lint diagnostics are in the [nonLintProducerMap].
+ @Deprecated('To be replaced w/ lintProducerMap2')
static const Map<String, List<ProducerGenerator>> lintProducerMap = {
LintNames.always_declare_return_types: [
AddReturnType.newInstance,
@@ -1447,7 +1448,7 @@
/// A map from error codes to a list of generators used to create the
/// correction producers used to build fixes for those diagnostics. The
- /// generators used for lint rules are in the [lintProducerMap].
+ /// generators used for lint rules are in the [lintProducerMap2].
static const Map<ErrorCode, List<ProducerGenerator>> nonLintProducerMap = {
CompileTimeErrorCode.ASSIGNMENT_TO_FINAL: [
MakeFieldNotFinal.newInstance,
@@ -2006,9 +2007,9 @@
var errorCode = error.errorCode;
if (errorCode is LintCode) {
- var generators = lintProducerMap[errorCode.name];
- if (generators != null) {
- for (var generator in generators) {
+ var fixes = lintProducerMap2[errorCode.name] ?? [];
+ for (var fix in fixes) {
+ for (var generator in fix.generators) {
await compute(generator());
}
}
diff --git a/pkg/analysis_server/test/src/services/correction/fix/fix_in_file_test.dart b/pkg/analysis_server/test/src/services/correction/fix/fix_in_file_test.dart
index 482894f..04b9eab 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/fix_in_file_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/fix_in_file_test.dart
@@ -121,6 +121,7 @@
verify_fixInFileFixesHaveBulkFixTests();
verify_fixInFileFixKindsHaveMultiFixes();
verify_fixInFileFixesHaveUniqueBulkFixes();
+ verify_lintProducerMap2_coverage();
}
static void verify_fixInFileFixesHaveBulkFixTests() {
@@ -129,7 +130,7 @@
var errorCode = fixEntry.key;
for (var fixInfo in fixEntry.value) {
if (fixInfo.canBeAppliedToFile) {
- test(errorCode, () {
+ test('$errorCode |', () {
expect(fixInfo.canBeBulkApplied, isTrue);
});
}
@@ -187,6 +188,19 @@
}
});
}
+
+ static void verify_lintProducerMap2_coverage() {
+ // todo (pq): remove when lintProducerMap is deleted.
+ group('VerificationTests | lintProducerMap2_coverage |', () {
+ // ignore: deprecated_member_use_from_same_package
+ for (var entry in FixProcessor.lintProducerMap.entries) {
+ var errorCode = entry.key;
+ test('$errorCode |', () {
+ expect(FixProcessor.lintProducerMap2, contains(errorCode));
+ });
+ }
+ });
+ }
}
/// todo (pq): add negative tests