Version 2.13.0-98.0.dev
Merge commit 'e7644d9a4c6f400680206f6d03135f24d0480052' into 'dev'
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/remove_unused_import.dart b/pkg/analysis_server/lib/src/services/correction/dart/remove_unused_import.dart
index bb5bf5a..3fa7457 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/remove_unused_import.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/remove_unused_import.dart
@@ -14,6 +14,9 @@
FixKind get fixKind => DartFixKind.REMOVE_UNUSED_IMPORT;
@override
+ FixKind get multiFixKind => DartFixKind.REMOVE_UNUSED_IMPORT_MULTI;
+
+ @override
Future<void> compute(ChangeBuilder builder) async {
// prepare ImportDirective
var importDirective = node.thisOrAncestorOfType<ImportDirective>();
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 e8bc6be..c6ddc15 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -287,13 +287,12 @@
}
}
} else {
- // todo (pq): add support for non-lint producers and update to a new nonLintProducerMap2
- // var generators = FixProcessor.nonLintProducerMap[errorCode];
- // if (generators != null) {
- // if (generators != null) {
- // producers.addAll(generators);
- // }
- // }
+ var fixInfos = FixProcessor.nonLintProducerMap2[errorCode] ?? [];
+ for (var fixInfo in fixInfos) {
+ if (fixInfo.canBeAppliedToFile) {
+ producers.addAll(fixInfo.generators);
+ }
+ }
// todo (pq): consider support for multiGenerators
}
return producers;
@@ -313,6 +312,19 @@
/// The computer for Dart fixes.
class FixProcessor extends BaseProcessor {
+ /// todo (pq): to replace nonLintProducerMap.
+ static const Map<ErrorCode, List<FixInfo>> nonLintProducerMap2 = {
+ HintCode.UNUSED_IMPORT: [
+ FixInfo(
+ canBeAppliedToFile: true,
+ canBeBulkApplied: false,
+ generators: [
+ RemoveUnusedImport.newInstance,
+ ],
+ ),
+ ],
+ };
+
/// todo (pq): to replace lintProducerMap.
static const Map<String, List<FixInfo>> lintProducerMap2 = {
LintNames.always_declare_return_types: [
diff --git a/pkg/analysis_server/test/src/services/correction/fix/remove_unused_import_test.dart b/pkg/analysis_server/test/src/services/correction/fix/remove_unused_import_test.dart
index 6a9cc3e..020945a 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/remove_unused_import_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/remove_unused_import_test.dart
@@ -12,13 +12,14 @@
void main() {
defineReflectiveSuite(() {
defineReflectiveTests(RemoveUnusedImportTest);
+ defineReflectiveTests(RemoveUnusedImportMultiTest);
});
}
@reflectiveTest
-class RemoveUnusedImportTest extends FixProcessorTest {
+class RemoveUnusedImportMultiTest extends FixProcessorTest {
@override
- FixKind get kind => DartFixKind.REMOVE_UNUSED_IMPORT;
+ FixKind get kind => DartFixKind.REMOVE_UNUSED_IMPORT_MULTI;
@override
void setUp() {
@@ -27,7 +28,6 @@
useLineEndingsForPlatform = false;
}
- @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/45026')
Future<void> test_all_diverseImports() async {
await resolveTestCode('''
import 'dart:math';
@@ -42,7 +42,6 @@
''');
}
- @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/45026')
Future<void> test_all_diverseImports2() async {
await resolveTestCode('''
import 'dart:async';
@@ -64,7 +63,7 @@
''');
}
- @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/45026')
+ @FailingTest(reason: 'one unused import remains unremoved')
Future<void> test_all_singleLine() async {
await resolveTestCode('''
import 'dart:math'; import 'dart:math'; import 'dart:math';
@@ -77,6 +76,33 @@
''');
}
+ Future<void> test_multipleOfSame_all() async {
+ await resolveTestCode('''
+import 'dart:math';
+import 'dart:math';
+import 'dart:math';
+main() {
+}
+''');
+ await assertHasFixAllFix(HintCode.UNUSED_IMPORT, '''
+main() {
+}
+''');
+ }
+}
+
+@reflectiveTest
+class RemoveUnusedImportTest extends FixProcessorTest {
+ @override
+ FixKind get kind => DartFixKind.REMOVE_UNUSED_IMPORT;
+
+ @override
+ void setUp() {
+ super.setUp();
+ // TODO(dantup): Get these tests passing with either line ending.
+ useLineEndingsForPlatform = false;
+ }
+
Future<void> test_anotherImportOnLine() async {
await resolveTestCode('''
import 'dart:math'; import 'dart:async';
@@ -114,21 +140,6 @@
''');
}
- @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/45026')
- Future<void> test_multipleOfSame_all() async {
- await resolveTestCode('''
-import 'dart:math';
-import 'dart:math';
-import 'dart:math';
-main() {
-}
-''');
- await assertHasFixAllFix(HintCode.UNUSED_IMPORT, '''
-main() {
-}
-''');
- }
-
Future<void> test_severalLines() async {
await resolveTestCode('''
import
diff --git a/tools/VERSION b/tools/VERSION
index 5ab8887..e96e386 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 13
PATCH 0
-PRERELEASE 97
+PRERELEASE 98
PRERELEASE_PATCH 0
\ No newline at end of file