[analysis_server] Remove unnecessary imports when organizing imports

Change-Id: I7a39a9b07adbacc7d3fd5abb3b165b47668e7938
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/252420
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/lib/src/services/correction/organize_imports.dart b/pkg/analysis_server/lib/src/services/correction/organize_imports.dart
index 8206e04..b31d1f9 100644
--- a/pkg/analysis_server/lib/src/services/correction/organize_imports.dart
+++ b/pkg/analysis_server/lib/src/services/correction/organize_imports.dart
@@ -59,7 +59,8 @@
   bool _isUnusedImport(UriBasedDirective directive) {
     for (var error in errors) {
       if ((error.errorCode == HintCode.DUPLICATE_IMPORT ||
-              error.errorCode == HintCode.UNUSED_IMPORT) &&
+              error.errorCode == HintCode.UNUSED_IMPORT ||
+              error.errorCode == HintCode.UNNECESSARY_IMPORT) &&
           directive.uri.offset == error.offset) {
         return true;
       }
diff --git a/pkg/analysis_server/test/services/correction/organize_directives_test.dart b/pkg/analysis_server/test/services/correction/organize_directives_test.dart
index 3d59aee..e61dd22 100644
--- a/pkg/analysis_server/test/services/correction/organize_directives_test.dart
+++ b/pkg/analysis_server/test/services/correction/organize_directives_test.dart
@@ -245,6 +245,31 @@
 }''', removeUnused: true);
   }
 
+  Future<void> test_remove_unnecessaryImports() async {
+    newFile(
+      convertPath('$testPackageLibPath/declarations.dart'),
+      'class A {} class B {}',
+    );
+    newFile(
+      convertPath('$testPackageLibPath/exports.dart'),
+      'export "a.dart" show A;',
+    );
+    await _computeUnitAndErrors(r'''
+import 'declarations.dart';
+import 'exports.dart';
+
+A? a;
+B? b;
+''');
+    // validate change
+    _assertOrganize(r'''
+import 'declarations.dart';
+
+A? a;
+B? b;
+''', removeUnused: true);
+  }
+
   Future<void> test_remove_unusedImports() async {
     await _computeUnitAndErrors(r'''
 library lib;