Fine. Use shared _writelnIdList(), distinguish 'not asked' from 'empty'.

Change-Id: I3db287dd7e18e3dabded40c285b165a8bb6ff104
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/448425
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index 60e1c5b..6c50c5a 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -5895,6 +5895,9 @@
           A: #M0
         instances
           A
+            allDeclaredGetters: []
+            allDeclaredSetters: []
+            allDeclaredMethods: []
         interfaces
           A
             allConstructors: #M4
@@ -5956,7 +5959,7 @@
     libraryUri: package:test/a.dart
     instanceName: A
     childrenPropertyName: getters
-    expectedIds: 
+    expectedIds: []
     actualIds: #M6
 [operation] analyzeFile
   file: /home/test/lib/test.dart
@@ -5974,6 +5977,7 @@
               foo: #M5
             allDeclaredGetters: #M6
             allDeclaredSetters: #M7
+            allDeclaredMethods: []
         interfaces
           A
             allConstructors: #M4
@@ -6035,6 +6039,9 @@
           A: #M0
         instances
           A
+            allDeclaredGetters: []
+            allDeclaredSetters: []
+            allDeclaredMethods: []
         interfaces
           A
             allConstructors: #M4
@@ -6090,7 +6097,7 @@
     libraryUri: package:test/a.dart
     instanceName: A
     childrenPropertyName: getters
-    expectedIds: 
+    expectedIds: []
     actualIds: #M6
 [operation] analyzeFile
   file: /home/test/lib/test.dart
@@ -6106,6 +6113,7 @@
           A
             allDeclaredGetters: #M6
             allDeclaredSetters: #M7
+            allDeclaredMethods: []
         interfaces
           A
             allConstructors: #M4
@@ -6662,6 +6670,7 @@
               foo: #M1
             allDeclaredGetters: #M2
             allDeclaredSetters: #M3
+            allDeclaredMethods: []
         interfaces
           A
             allConstructors: #M7
@@ -6747,6 +6756,7 @@
               foo: #M8
             allDeclaredGetters: #M9
             allDeclaredSetters: #M3
+            allDeclaredMethods: []
         interfaces
           A
             allConstructors: #M7
@@ -8446,6 +8456,8 @@
           A: #M0
         instances
           A
+            allDeclaredGetters: []
+            allDeclaredSetters: []
             allDeclaredMethods: #M2 #M1
         interfaces
           A
@@ -8525,6 +8537,8 @@
           A: #M0
         instances
           A
+            allDeclaredGetters: []
+            allDeclaredSetters: []
             allDeclaredMethods: #M7 #M1
         interfaces
           A
@@ -8616,10 +8630,17 @@
           C: #M6
         instances
           A
+            allDeclaredGetters: []
+            allDeclaredSetters: []
             allDeclaredMethods: #M1
           B
+            allDeclaredGetters: []
+            allDeclaredSetters: []
             allDeclaredMethods: #M4
           C
+            allDeclaredGetters: []
+            allDeclaredSetters: []
+            allDeclaredMethods: []
         interfaces
           C
             allConstructors: #M11
@@ -8712,10 +8733,17 @@
           C: #M6
         instances
           A
+            allDeclaredGetters: []
+            allDeclaredSetters: []
             allDeclaredMethods: #M12
           B
+            allDeclaredGetters: []
+            allDeclaredSetters: []
             allDeclaredMethods: #M4
           C
+            allDeclaredGetters: []
+            allDeclaredSetters: []
+            allDeclaredMethods: []
         interfaces
           C
             allConstructors: #M11
@@ -13601,6 +13629,9 @@
           named: <null>
         instances
           A
+            allDeclaredGetters: []
+            allDeclaredSetters: []
+            allDeclaredMethods: []
         interfaces
           A
             allConstructors: #M1
@@ -13676,6 +13707,9 @@
           named: <null>
         instances
           A
+            allDeclaredGetters: []
+            allDeclaredSetters: []
+            allDeclaredMethods: []
         interfaces
           A
             allConstructors: #M6
@@ -28122,6 +28156,9 @@
           A: #M0
         instances
           A
+            allDeclaredGetters: []
+            allDeclaredSetters: []
+            allDeclaredMethods: []
 [status] idle
 [future] getErrors T1
   ErrorsResult #0
diff --git a/pkg/analyzer/test/src/dart/analysis/result_printer.dart b/pkg/analyzer/test/src/dart/analysis/result_printer.dart
index 0b3c2d0..ded206a 100644
--- a/pkg/analyzer/test/src/dart/analysis/result_printer.dart
+++ b/pkg/analyzer/test/src/dart/analysis/result_printer.dart
@@ -84,13 +84,7 @@
   }
 
   void _writeExportedExtensions(LibraryRequirements requirements) {
-    if (requirements.exportedExtensions case var extensions?) {
-      var idListStr = extensions.asString(idProvider);
-      if (idListStr.isEmpty) {
-        idListStr = '[]';
-      }
-      sink.writelnWithIndent('exportedExtensions: $idListStr');
-    }
+    _writelnIdList('exportedExtensions', requirements.exportedExtensions);
   }
 
   void _writeExportedTopLevels(LibraryRequirements requirements) {
@@ -168,26 +162,19 @@
       });
 
       sink.withIndent(() {
-        void writeAllDeclared(String name, ManifestItemIdList? idList) {
-          if (idList != null && idList.ids.isNotEmpty) {
-            var idListStr = idList.asString(idProvider);
-            sink.writelnWithIndent('$name: $idListStr');
-          }
-        }
-
-        writeAllDeclared(
+        _writelnIdList(
           'allDeclaredFields',
           instanceRequirements.allDeclaredFields,
         );
-        writeAllDeclared(
+        _writelnIdList(
           'allDeclaredGetters',
           instanceRequirements.allDeclaredGetters,
         );
-        writeAllDeclared(
+        _writelnIdList(
           'allDeclaredSetters',
           instanceRequirements.allDeclaredSetters,
         );
-        writeAllDeclared(
+        _writelnIdList(
           'allDeclaredMethods',
           instanceRequirements.allDeclaredMethods,
         );
@@ -208,12 +195,7 @@
         if (requirements.hasNonFinalField case var value?) {
           sink.writelnWithIndent('hasNonFinalField: $value');
         }
-        if (requirements.allConstructors case var allConstructors?) {
-          if (allConstructors.ids.isNotEmpty) {
-            var idListStr = allConstructors.asString(idProvider);
-            sink.writelnWithIndent('allConstructors: $idListStr');
-          }
-        }
+        _writelnIdList('allConstructors', requirements.allConstructors);
         sink.writeElements(
           'requestedConstructors',
           requirements.requestedConstructors.sorted,
@@ -228,6 +210,13 @@
     });
   }
 
+  void _writelnIdList(String name, ManifestItemIdList? idList) {
+    if (idList != null) {
+      var idListStr = idList.asString(idProvider);
+      sink.writelnWithIndent('$name: $idListStr');
+    }
+  }
+
   void _writeNamedId(MapEntry<LookupName, ManifestItemId?> entry) {
     if (entry.value case var id?) {
       var idStr = idProvider.manifestId(id);
@@ -1789,7 +1778,11 @@
 
 extension on ManifestItemIdList {
   String asString(IdProvider idProvider) {
-    return ids.map((id) => idProvider.manifestId(id)).join(' ');
+    if (ids.isNotEmpty) {
+      return ids.map((id) => idProvider.manifestId(id)).join(' ');
+    } else {
+      return '[]';
+    }
   }
 }