Use named parameters for LinkInputLibrary and LinkInputUnit.

R=brianwilkerson@google.com

Change-Id: I1bee321bcf6775dd2a433024d35758dd7ab05b9e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/201231
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/dart/sdk/build_sdk_summary.dart b/pkg/analyzer/lib/dart/sdk/build_sdk_summary.dart
index 486a073..c54627b 100644
--- a/pkg/analyzer/lib/dart/sdk/build_sdk_summary.dart
+++ b/pkg/analyzer/lib/dart/sdk/build_sdk_summary.dart
@@ -136,9 +136,15 @@
 
     CompilationUnit definingUnit = _parse(source);
     inputUnits.add(
-      LinkInputUnit(null, source, false, definingUnit),
+      LinkInputUnit.tmp1(
+        partDirectiveIndex: null,
+        source: source,
+        isSynthetic: false,
+        unit: definingUnit,
+      ),
     );
 
+    var partDirectiveIndex = 0;
     for (Directive directive in definingUnit.directives) {
       if (directive is NamespaceDirective) {
         String libUri = directive.uri.stringValue!;
@@ -149,13 +155,22 @@
         Source partSource = context.sourceFactory.resolveUri(source, partUri)!;
         CompilationUnit partUnit = _parse(partSource);
         inputUnits.add(
-          LinkInputUnit(partUri, partSource, false, partUnit),
+          LinkInputUnit.tmp1(
+            partUriStr: partUri,
+            partDirectiveIndex: partDirectiveIndex++,
+            source: partSource,
+            isSynthetic: false,
+            unit: partUnit,
+          ),
         );
       }
     }
 
     inputLibraries.add(
-      LinkInputLibrary(source, inputUnits),
+      LinkInputLibrary.tmp1(
+        source: source,
+        units: inputUnits,
+      ),
     );
   }
 
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_context.dart b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
index f6fa993..8fc9a4a 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_context.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
@@ -145,17 +145,22 @@
             partIndex++;
 
             inputUnits.add(
-              link2.LinkInputUnit(
-                partUriStr,
-                file.source,
-                isSynthetic,
-                unit,
+              link2.LinkInputUnit.tmp1(
+                // TODO(scheglov) bad, group part data
+                partDirectiveIndex: partIndex - 1,
+                partUriStr: partUriStr,
+                source: file.source,
+                isSynthetic: isSynthetic,
+                unit: unit,
               ),
             );
           }
 
           inputLibraries.add(
-            link2.LinkInputLibrary(librarySource, inputUnits),
+            link2.LinkInputLibrary.tmp1(
+              source: librarySource,
+              units: inputUnits,
+            ),
           );
         }
         inputsTimer.stop();
diff --git a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
index a175010..6ce2ccd 100644
--- a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
+++ b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
@@ -862,17 +862,22 @@
             partIndex++;
 
             inputUnits.add(
-              link2.LinkInputUnit(
-                partUriStr,
-                file.source,
-                isSynthetic,
-                unit,
+              link2.LinkInputUnit.tmp1(
+                // TODO(scheglov) bad, group part data
+                partDirectiveIndex: partIndex - 1,
+                partUriStr: partUriStr,
+                source: file.source,
+                isSynthetic: isSynthetic,
+                unit: unit,
               ),
             );
           }
 
           inputLibraries.add(
-            link2.LinkInputLibrary(librarySource, inputUnits),
+            link2.LinkInputLibrary.tmp1(
+              source: librarySource,
+              units: inputUnits,
+            ),
           );
         }
         inputsTimer.stop();
diff --git a/pkg/analyzer/lib/src/summary2/link.dart b/pkg/analyzer/lib/src/summary2/link.dart
index 225b860..cc67f58 100644
--- a/pkg/analyzer/lib/src/summary2/link.dart
+++ b/pkg/analyzer/lib/src/summary2/link.dart
@@ -238,29 +238,45 @@
   final Source source;
   final List<LinkInputUnit> units;
 
+  @Deprecated('Use LinkInputLibrary.tmp1() with instead')
   LinkInputLibrary(this.source, this.units);
 
+  LinkInputLibrary.tmp1({
+    required this.source,
+    required this.units,
+  });
+
   Uri get uri => source.uri;
 
   String get uriStr => '$uri';
 }
 
 class LinkInputUnit {
+  final int? partDirectiveIndex;
   final String? partUriStr;
   final Source source;
   final bool isSynthetic;
   final ast.CompilationUnit unit;
 
+  @Deprecated('Use LinkInputUnit.tmp1() with instead')
   LinkInputUnit(
     this.partUriStr,
     this.source,
     this.isSynthetic,
     this.unit,
-  );
+  ) : partDirectiveIndex = null;
 
-  String get uriStr {
-    return '${source.uri}';
-  }
+  LinkInputUnit.tmp1({
+    required this.partDirectiveIndex,
+    this.partUriStr,
+    required this.source,
+    required this.isSynthetic,
+    required this.unit,
+  });
+
+  Uri get uri => source.uri;
+
+  String get uriStr => '$uri';
 }
 
 class LinkResult {
diff --git a/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart b/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart
index b07b6f8..57f9f33 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_ast2_test.dart
@@ -59,7 +59,10 @@
       var inputUnits = <LinkInputUnit>[];
       _addLibraryUnits(source, unit, inputUnits, featureSet);
       inputLibraries.add(
-        LinkInputLibrary(source, inputUnits),
+        LinkInputLibrary.tmp1(
+          source: source,
+          units: inputUnits,
+        ),
       );
     }
 
@@ -95,9 +98,7 @@
     for (var inputLibrary in inputLibraries) {
       for (var inputUnit in inputLibrary.units) {
         var informativeBytes = writeUnitInformative(inputUnit.unit);
-        // TODO(scheglov) store Uri, don't parse
-        var uri = Uri.parse(inputUnit.uriStr);
-        unitsInformativeBytes[uri] = informativeBytes;
+        unitsInformativeBytes[inputUnit.uri] = informativeBytes;
       }
     }
 
@@ -146,10 +147,18 @@
     FeatureSet featureSet,
   ) {
     units.add(
-      LinkInputUnit(null, definingSource, false, definingUnit),
+      LinkInputUnit.tmp1(
+        partDirectiveIndex: null,
+        source: definingSource,
+        isSynthetic: false,
+        unit: definingUnit,
+      ),
     );
+
+    var partDirectiveIndex = -1;
     for (var directive in definingUnit.directives) {
       if (directive is PartDirective) {
+        ++partDirectiveIndex;
         var relativeUriStr = directive.uri.stringValue;
 
         var partSource = sourceFactory.resolveUri(
@@ -161,7 +170,13 @@
           var text = _readSafely(partSource.fullName);
           var unit = parseText(text, featureSet);
           units.add(
-            LinkInputUnit(relativeUriStr, partSource, false, unit),
+            LinkInputUnit.tmp1(
+              partDirectiveIndex: partDirectiveIndex,
+              partUriStr: relativeUriStr,
+              source: partSource,
+              isSynthetic: false,
+              unit: unit,
+            ),
           );
         }
       }
@@ -185,7 +200,10 @@
     var units = <LinkInputUnit>[];
     _addLibraryUnits(source, unit, units, featureSet);
     libraries.add(
-      LinkInputLibrary(source, units),
+      LinkInputLibrary.tmp1(
+        source: source,
+        units: units,
+      ),
     );
 
     void addRelativeUriStr(StringLiteral uriNode) {