Add some validation tests for quick fixes and fix a violation
Change-Id: I3e9d049938140600a4dbd9669c9781c50a0c2c75
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/201041
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_into_is_not.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_into_is_not.dart
index b81db26..4381b83 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/convert_into_is_not.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_into_is_not.dart
@@ -4,12 +4,14 @@
import 'package:analysis_server/src/services/correction/assist.dart';
import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/fix.dart';
import 'package:analysis_server/src/services/correction/util.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/precedence.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer_plugin/utilities/assist/assist.dart';
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
import 'package:analyzer_plugin/utilities/range_factory.dart';
class ConvertIntoIsNot extends CorrectionProducer {
@@ -17,6 +19,12 @@
AssistKind get assistKind => DartAssistKind.CONVERT_INTO_IS_NOT;
@override
+ FixKind get fixKind => DartFixKind.CONVERT_TO_IS_NOT;
+
+ @override
+ FixKind get multiFixKind => DartFixKind.CONVERT_TO_IS_NOT_MULTI;
+
+ @override
Future<void> compute(ChangeBuilder builder) async {
// Find the is expression
var isExpression = node.thisOrAncestorOfType<IsExpression>();
diff --git a/pkg/analysis_server/lib/src/services/correction/fix.dart b/pkg/analysis_server/lib/src/services/correction/fix.dart
index 365dc29..661861a 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix.dart
@@ -311,6 +311,10 @@
'dart.fix.convert.toIntLiteral.multi',
DartFixKindPriority.IN_FILE,
'Convert to int literals everywhere in file');
+ static const CONVERT_TO_IS_NOT = FixKind(
+ 'dart.fix.convert.isNot', DartFixKindPriority.DEFAULT, 'Convert to is!');
+ static const CONVERT_TO_IS_NOT_MULTI = FixKind('dart.fix.convert.isNot.multi',
+ DartFixKindPriority.IN_FILE, 'Convert to is! everywhere in file');
static const CONVERT_TO_LINE_COMMENT = FixKind(
'dart.fix.convert.toLineComment',
DartFixKindPriority.DEFAULT,
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 2ff9ef9..6359410 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -805,11 +805,9 @@
],
)
],
- // todo (pq): note this is not in lintProducerMap
LintNames.prefer_is_not_operator: [
FixInfo(
- // todo (pq): consider enabling
- canBeAppliedToFile: false,
+ canBeAppliedToFile: true,
canBeBulkApplied: true,
generators: [
ConvertIntoIsNot.newInstance,
diff --git a/pkg/analysis_server/test/src/services/correction/fix/fix_processor_map_test.dart b/pkg/analysis_server/test/src/services/correction/fix/fix_processor_map_test.dart
new file mode 100644
index 0000000..3f86540
--- /dev/null
+++ b/pkg/analysis_server/test/src/services/correction/fix/fix_processor_map_test.dart
@@ -0,0 +1,44 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analysis_server/src/services/correction/fix_internal.dart';
+import 'package:test/test.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+void main() {
+ defineReflectiveSuite(() {
+ defineReflectiveTests(FixProcessorMapTest);
+ });
+}
+
+@reflectiveTest
+class FixProcessorMapTest {
+ void test_lintProducerMap() {
+ _testMap(FixProcessor.lintProducerMap.values);
+ }
+
+ void test_nonLintProducerMap() {
+ _testMap(FixProcessor.nonLintProducerMap.values);
+ }
+
+ void _testInfo(FixInfo info) {
+ for (var generator in info.generators) {
+ var producer = generator();
+ var className = producer.runtimeType.toString();
+ expect(producer.fixKind, isNotNull, reason: '$className.fixKind');
+ if (info.canBeAppliedToFile) {
+ expect(producer.multiFixKind, isNotNull,
+ reason: '$className.multiFixKind');
+ }
+ }
+ }
+
+ void _testMap(Iterable<List<FixInfo>> values) {
+ for (var list in values) {
+ for (var info in list) {
+ _testInfo(info);
+ }
+ }
+ }
+}
diff --git a/pkg/analysis_server/test/src/services/correction/fix/test_all.dart b/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
index e520510..acc1caf 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
@@ -83,6 +83,7 @@
import 'data_driven/test_all.dart' as data_driven;
import 'extend_class_for_mixin_test.dart' as extend_class_for_mixin;
import 'fix_in_file_test.dart' as fix_in_file;
+import 'fix_processor_map_test.dart' as fix_processor_map;
import 'fix_test.dart' as fix;
import 'import_async_test.dart' as import_async;
import 'import_library_prefix_test.dart' as import_library_prefix;
@@ -250,6 +251,7 @@
extend_class_for_mixin.main();
fix.main();
fix_in_file.main();
+ fix_processor_map.main();
import_async.main();
import_library_prefix.main();
import_library_project.main();