Parts. Change library augmentation tests for exports to parts.

Change-Id: I4b56425fff4a247d73351a00c2c387d075a7324a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/379664
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/summary2/library_builder.dart b/pkg/analyzer/lib/src/summary2/library_builder.dart
index e275914..e74c04b 100644
--- a/pkg/analyzer/lib/src/summary2/library_builder.dart
+++ b/pkg/analyzer/lib/src/summary2/library_builder.dart
@@ -127,19 +127,11 @@
   });
 
   void addExporters() {
-    var containers = [element, ...element.augmentations];
-    for (var containerIndex = 0;
-        containerIndex < containers.length;
-        containerIndex++) {
-      var container = containers[containerIndex];
-      var exportElements = container.libraryExports;
-      for (var exportIndex = 0;
-          exportIndex < exportElements.length;
-          exportIndex++) {
-        var exportElement = exportElements[exportIndex];
-
+    for (var (fragmentIndex, fragment) in element.units.indexed) {
+      for (var (exportIndex, exportElement)
+          in fragment.libraryExports.indexed) {
         var exportedLibrary = exportElement.exportedLibrary;
-        if (exportedLibrary is! LibraryElementImpl) {
+        if (exportedLibrary == null) {
           continue;
         }
 
@@ -159,7 +151,7 @@
         var export = Export(
           exporter: this,
           location: ExportLocation(
-            containerIndex: containerIndex,
+            containerIndex: fragmentIndex,
             exportIndex: exportIndex,
           ),
           combinators: combinators,
diff --git a/pkg/analyzer/test/src/summary/elements/library_export_test.dart b/pkg/analyzer/test/src/summary/elements/library_export_test.dart
index 54c88ca..d31a409 100644
--- a/pkg/analyzer/test/src/summary/elements/library_export_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/library_export_test.dart
@@ -1007,31 +1007,36 @@
 ''');
   }
 
-  test_exportScope_augmentation_class() async {
+  test_exportScope_part_class() async {
     newFile('$testPackageLibPath/a.dart', r'''
-augment library 'test.dart';
+part of 'test.dart';
 augment class A {}
 class B {}
 ''');
+
     var library = await buildLibrary(r'''
-import augment 'a.dart';
+part 'a.dart';
 class A {}
 ''');
+
     configuration.withExportScope = true;
     checkElementText(library, r'''
 library
   reference: <testLibrary>
   definingUnit: <testLibraryFragment>
-  augmentationImports
-    package:test/a.dart
-      enclosingElement: <testLibrary>
-      reference: <testLibrary>::@augmentation::package:test/a.dart
-      definingUnit: <testLibrary>::@fragment::package:test/a.dart
+  parts
+    part_0
   units
     <testLibraryFragment>
       enclosingElement: <testLibrary>
+      parts
+        part_0
+          uri: package:test/a.dart
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibraryFragment>
+          unit: <testLibrary>::@fragment::package:test/a.dart
       classes
-        class A @31
+        class A @21
           reference: <testLibraryFragment>::@class::A
           enclosingElement: <testLibraryFragment>
           augmentation: <testLibrary>::@fragment::package:test/a.dart::@classAugmentation::A
@@ -1043,14 +1048,14 @@
             constructors
               <testLibraryFragment>::@class::A::@constructor::new
     <testLibrary>::@fragment::package:test/a.dart
-      enclosingElement: <testLibrary>::@augmentation::package:test/a.dart
+      enclosingElement: <testLibrary>
       enclosingElement3: <testLibraryFragment>
       classes
-        augment class A @43
+        augment class A @35
           reference: <testLibrary>::@fragment::package:test/a.dart::@classAugmentation::A
           enclosingElement: <testLibrary>::@fragment::package:test/a.dart
           augmentationTarget: <testLibraryFragment>::@class::A
-        class B @54
+        class B @46
           reference: <testLibrary>::@fragment::package:test/a.dart::@class::B
           enclosingElement: <testLibrary>::@fragment::package:test/a.dart
           constructors
@@ -1078,61 +1083,61 @@
 ''');
   }
 
-  test_exportScope_augmentation_export() async {
+  test_exportScope_part_export() async {
     newFile('$testPackageLibPath/a.dart', r'''
 class A {}
 ''');
+
     newFile('$testPackageLibPath/b.dart', r'''
 class B1 {}
 class B2 {}
 ''');
+
     newFile('$testPackageLibPath/c.dart', r'''
 class C {}
 ''');
+
     newFile('$testPackageLibPath/d.dart', r'''
-augment library 'test.dart';
+part of 'test.dart';
 export 'a.dart';
 ''');
+
     newFile('$testPackageLibPath/e.dart', r'''
-augment library 'test.dart';
+part of 'test.dart';
 export 'b.dart';
 export 'c.dart';
 ''');
+
     var library = await buildLibrary(r'''
-import augment 'd.dart';
-import augment 'e.dart';
+part 'd.dart';
+part 'e.dart';
 class X {}
 ''');
+
     configuration.withExportScope = true;
     checkElementText(library, r'''
 library
   reference: <testLibrary>
   definingUnit: <testLibraryFragment>
-  augmentationImports
-    package:test/d.dart
-      enclosingElement: <testLibrary>
-      reference: <testLibrary>::@augmentation::package:test/d.dart
-      libraryExports
-        package:test/a.dart
-          enclosingElement: <testLibrary>
-          enclosingElement3: <testLibrary>::@fragment::package:test/d.dart
-      definingUnit: <testLibrary>::@fragment::package:test/d.dart
-    package:test/e.dart
-      enclosingElement: <testLibrary>
-      reference: <testLibrary>::@augmentation::package:test/e.dart
-      libraryExports
-        package:test/b.dart
-          enclosingElement: <testLibrary>
-          enclosingElement3: <testLibrary>::@fragment::package:test/e.dart
-        package:test/c.dart
-          enclosingElement: <testLibrary>
-          enclosingElement3: <testLibrary>::@fragment::package:test/e.dart
-      definingUnit: <testLibrary>::@fragment::package:test/e.dart
+  parts
+    part_0
+    part_1
   units
     <testLibraryFragment>
       enclosingElement: <testLibrary>
+      parts
+        part_0
+          uri: package:test/d.dart
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibraryFragment>
+          unit: <testLibrary>::@fragment::package:test/d.dart
+        part_1
+          uri: package:test/e.dart
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibraryFragment>
+          unit: <testLibrary>::@fragment::package:test/e.dart
       classes
-        class X @56
+        class X @36
           reference: <testLibraryFragment>::@class::X
           enclosingElement: <testLibraryFragment>
           constructors
@@ -1140,14 +1145,14 @@
               reference: <testLibraryFragment>::@class::X::@constructor::new
               enclosingElement: <testLibraryFragment>::@class::X
     <testLibrary>::@fragment::package:test/d.dart
-      enclosingElement: <testLibrary>::@augmentation::package:test/d.dart
+      enclosingElement: <testLibrary>
       enclosingElement3: <testLibraryFragment>
       libraryExports
         package:test/a.dart
           enclosingElement: <testLibrary>
           enclosingElement3: <testLibrary>::@fragment::package:test/d.dart
     <testLibrary>::@fragment::package:test/e.dart
-      enclosingElement: <testLibrary>::@augmentation::package:test/e.dart
+      enclosingElement: <testLibrary>
       enclosingElement3: <testLibraryFragment>
       libraryExports
         package:test/b.dart
@@ -1190,42 +1195,42 @@
 ''');
   }
 
-  test_exportScope_augmentation_export_hide() async {
+  test_exportScope_part_export_hide() async {
     newFile('$testPackageLibPath/a.dart', r'''
 class A1 {}
 class A2 {}
 class A3 {}
 class A4 {}
 ''');
+
     newFile('$testPackageLibPath/b.dart', r'''
-augment library 'test.dart';
+part of 'test.dart';
 export 'a.dart' hide A2, A4;
 ''');
+
     var library = await buildLibrary(r'''
-import augment 'b.dart';
+part 'b.dart';
 class X {}
 ''');
+
     configuration.withExportScope = true;
     checkElementText(library, r'''
 library
   reference: <testLibrary>
   definingUnit: <testLibraryFragment>
-  augmentationImports
-    package:test/b.dart
-      enclosingElement: <testLibrary>
-      reference: <testLibrary>::@augmentation::package:test/b.dart
-      libraryExports
-        package:test/a.dart
-          enclosingElement: <testLibrary>
-          enclosingElement3: <testLibrary>::@fragment::package:test/b.dart
-          combinators
-            hide: A2, A4
-      definingUnit: <testLibrary>::@fragment::package:test/b.dart
+  parts
+    part_0
   units
     <testLibraryFragment>
       enclosingElement: <testLibrary>
+      parts
+        part_0
+          uri: package:test/b.dart
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibraryFragment>
+          unit: <testLibrary>::@fragment::package:test/b.dart
       classes
-        class X @31
+        class X @21
           reference: <testLibraryFragment>::@class::X
           enclosingElement: <testLibraryFragment>
           constructors
@@ -1233,7 +1238,7 @@
               reference: <testLibraryFragment>::@class::X::@constructor::new
               enclosingElement: <testLibraryFragment>::@class::X
     <testLibrary>::@fragment::package:test/b.dart
-      enclosingElement: <testLibrary>::@augmentation::package:test/b.dart
+      enclosingElement: <testLibrary>
       enclosingElement3: <testLibraryFragment>
       libraryExports
         package:test/a.dart
@@ -1266,41 +1271,41 @@
 ''');
   }
 
-  test_exportScope_augmentation_export_show() async {
+  test_exportScope_part_export_show() async {
     newFile('$testPackageLibPath/a.dart', r'''
 class A1 {}
 class A2 {}
 class A3 {}
 ''');
+
     newFile('$testPackageLibPath/b.dart', r'''
-augment library 'test.dart';
+part of 'test.dart';
 export 'a.dart' show A1, A3;
 ''');
+
     var library = await buildLibrary(r'''
-import augment 'b.dart';
+part 'b.dart';
 class X {}
 ''');
+
     configuration.withExportScope = true;
     checkElementText(library, r'''
 library
   reference: <testLibrary>
   definingUnit: <testLibraryFragment>
-  augmentationImports
-    package:test/b.dart
-      enclosingElement: <testLibrary>
-      reference: <testLibrary>::@augmentation::package:test/b.dart
-      libraryExports
-        package:test/a.dart
-          enclosingElement: <testLibrary>
-          enclosingElement3: <testLibrary>::@fragment::package:test/b.dart
-          combinators
-            show: A1, A3
-      definingUnit: <testLibrary>::@fragment::package:test/b.dart
+  parts
+    part_0
   units
     <testLibraryFragment>
       enclosingElement: <testLibrary>
+      parts
+        part_0
+          uri: package:test/b.dart
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibraryFragment>
+          unit: <testLibrary>::@fragment::package:test/b.dart
       classes
-        class X @31
+        class X @21
           reference: <testLibraryFragment>::@class::X
           enclosingElement: <testLibraryFragment>
           constructors
@@ -1308,7 +1313,7 @@
               reference: <testLibraryFragment>::@class::X::@constructor::new
               enclosingElement: <testLibraryFragment>::@class::X
     <testLibrary>::@fragment::package:test/b.dart
-      enclosingElement: <testLibrary>::@augmentation::package:test/b.dart
+      enclosingElement: <testLibrary>
       enclosingElement3: <testLibraryFragment>
       libraryExports
         package:test/a.dart
@@ -1341,31 +1346,36 @@
 ''');
   }
 
-  test_exportScope_augmentation_mixin() async {
+  test_exportScope_part_mixin() async {
     newFile('$testPackageLibPath/a.dart', r'''
-augment library 'test.dart';
+part of 'test.dart';
 augment mixin A {}
 mixin B {}
 ''');
+
     var library = await buildLibrary(r'''
-import augment 'a.dart';
+part 'a.dart';
 mixin A {}
 ''');
+
     configuration.withExportScope = true;
     checkElementText(library, r'''
 library
   reference: <testLibrary>
   definingUnit: <testLibraryFragment>
-  augmentationImports
-    package:test/a.dart
-      enclosingElement: <testLibrary>
-      reference: <testLibrary>::@augmentation::package:test/a.dart
-      definingUnit: <testLibrary>::@fragment::package:test/a.dart
+  parts
+    part_0
   units
     <testLibraryFragment>
       enclosingElement: <testLibrary>
+      parts
+        part_0
+          uri: package:test/a.dart
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibraryFragment>
+          unit: <testLibrary>::@fragment::package:test/a.dart
       mixins
-        mixin A @31
+        mixin A @21
           reference: <testLibraryFragment>::@mixin::A
           enclosingElement: <testLibraryFragment>
           augmentation: <testLibrary>::@fragment::package:test/a.dart::@mixinAugmentation::A
@@ -1375,14 +1385,14 @@
             superclassConstraints
               Object
     <testLibrary>::@fragment::package:test/a.dart
-      enclosingElement: <testLibrary>::@augmentation::package:test/a.dart
+      enclosingElement: <testLibrary>
       enclosingElement3: <testLibraryFragment>
       mixins
-        augment mixin A @43
+        augment mixin A @35
           reference: <testLibrary>::@fragment::package:test/a.dart::@mixinAugmentation::A
           enclosingElement: <testLibrary>::@fragment::package:test/a.dart
           augmentationTarget: <testLibraryFragment>::@mixin::A
-        mixin B @54
+        mixin B @46
           reference: <testLibrary>::@fragment::package:test/a.dart::@mixin::B
           enclosingElement: <testLibrary>::@fragment::package:test/a.dart
           superclassConstraints
@@ -1408,40 +1418,41 @@
 ''');
   }
 
-  test_exportScope_augmentation_nested_class() async {
+  test_exportScope_part_nested_class() async {
     newFile('$testPackageLibPath/a.dart', r'''
-augment library 'test.dart';
-import augment 'b.dart';
+part of 'test.dart';
+part 'b.dart';
 class A {}
 ''');
+
     newFile('$testPackageLibPath/b.dart', r'''
-augment library 'a.dart';
+part of 'a.dart';
 class B {}
 ''');
+
     var library = await buildLibrary(r'''
-import augment 'a.dart';
+part 'a.dart';
 class C {}
 ''');
+
     configuration.withExportScope = true;
     checkElementText(library, r'''
 library
   reference: <testLibrary>
   definingUnit: <testLibraryFragment>
-  augmentationImports
-    package:test/a.dart
-      enclosingElement: <testLibrary>
-      reference: <testLibrary>::@augmentation::package:test/a.dart
-      definingUnit: <testLibrary>::@fragment::package:test/a.dart
-      augmentationImports
-        package:test/b.dart
-          enclosingElement: <testLibrary>::@augmentation::package:test/a.dart
-          reference: <testLibrary>::@augmentation::package:test/b.dart
-          definingUnit: <testLibrary>::@fragment::package:test/b.dart
+  parts
+    part_0
   units
     <testLibraryFragment>
       enclosingElement: <testLibrary>
+      parts
+        part_0
+          uri: package:test/a.dart
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibraryFragment>
+          unit: <testLibrary>::@fragment::package:test/a.dart
       classes
-        class C @31
+        class C @21
           reference: <testLibraryFragment>::@class::C
           enclosingElement: <testLibraryFragment>
           constructors
@@ -1449,10 +1460,16 @@
               reference: <testLibraryFragment>::@class::C::@constructor::new
               enclosingElement: <testLibraryFragment>::@class::C
     <testLibrary>::@fragment::package:test/a.dart
-      enclosingElement: <testLibrary>::@augmentation::package:test/a.dart
+      enclosingElement: <testLibrary>
       enclosingElement3: <testLibraryFragment>
+      parts
+        part_1
+          uri: package:test/b.dart
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibrary>::@fragment::package:test/a.dart
+          unit: <testLibrary>::@fragment::package:test/b.dart
       classes
-        class A @60
+        class A @42
           reference: <testLibrary>::@fragment::package:test/a.dart::@class::A
           enclosingElement: <testLibrary>::@fragment::package:test/a.dart
           constructors
@@ -1460,10 +1477,10 @@
               reference: <testLibrary>::@fragment::package:test/a.dart::@class::A::@constructor::new
               enclosingElement: <testLibrary>::@fragment::package:test/a.dart::@class::A
     <testLibrary>::@fragment::package:test/b.dart
-      enclosingElement: <testLibrary>::@augmentation::package:test/b.dart
+      enclosingElement: <testLibrary>
       enclosingElement3: <testLibrary>::@fragment::package:test/a.dart
       classes
-        class B @32
+        class B @24
           reference: <testLibrary>::@fragment::package:test/b.dart::@class::B
           enclosingElement: <testLibrary>::@fragment::package:test/b.dart
           constructors
@@ -1496,54 +1513,49 @@
 ''');
   }
 
-  test_exportScope_augmentation_nested_export() async {
+  test_exportScope_part_nested_export() async {
     newFile('$testPackageLibPath/a.dart', r'''
 class A {}
 ''');
+
     newFile('$testPackageLibPath/b.dart', r'''
 class B {}
 ''');
+
     newFile('$testPackageLibPath/c.dart', r'''
-augment library 'test.dart';
-import augment 'd.dart';
+part of 'test.dart';
+part 'd.dart';
 export 'a.dart';
 ''');
+
     newFile('$testPackageLibPath/d.dart', r'''
-augment library 'c.dart';
+part of 'c.dart';
 export 'b.dart';
 ''');
+
     var library = await buildLibrary(r'''
-import augment 'c.dart';
+part 'c.dart';
 class X {}
 ''');
+
     configuration.withExportScope = true;
     checkElementText(library, r'''
 library
   reference: <testLibrary>
   definingUnit: <testLibraryFragment>
-  augmentationImports
-    package:test/c.dart
-      enclosingElement: <testLibrary>
-      reference: <testLibrary>::@augmentation::package:test/c.dart
-      libraryExports
-        package:test/a.dart
-          enclosingElement: <testLibrary>
-          enclosingElement3: <testLibrary>::@fragment::package:test/c.dart
-      definingUnit: <testLibrary>::@fragment::package:test/c.dart
-      augmentationImports
-        package:test/d.dart
-          enclosingElement: <testLibrary>::@augmentation::package:test/c.dart
-          reference: <testLibrary>::@augmentation::package:test/d.dart
-          libraryExports
-            package:test/b.dart
-              enclosingElement: <testLibrary>
-              enclosingElement3: <testLibrary>::@fragment::package:test/d.dart
-          definingUnit: <testLibrary>::@fragment::package:test/d.dart
+  parts
+    part_0
   units
     <testLibraryFragment>
       enclosingElement: <testLibrary>
+      parts
+        part_0
+          uri: package:test/c.dart
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibraryFragment>
+          unit: <testLibrary>::@fragment::package:test/c.dart
       classes
-        class X @31
+        class X @21
           reference: <testLibraryFragment>::@class::X
           enclosingElement: <testLibraryFragment>
           constructors
@@ -1551,14 +1563,20 @@
               reference: <testLibraryFragment>::@class::X::@constructor::new
               enclosingElement: <testLibraryFragment>::@class::X
     <testLibrary>::@fragment::package:test/c.dart
-      enclosingElement: <testLibrary>::@augmentation::package:test/c.dart
+      enclosingElement: <testLibrary>
       enclosingElement3: <testLibraryFragment>
       libraryExports
         package:test/a.dart
           enclosingElement: <testLibrary>
           enclosingElement3: <testLibrary>::@fragment::package:test/c.dart
+      parts
+        part_1
+          uri: package:test/d.dart
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibrary>::@fragment::package:test/c.dart
+          unit: <testLibrary>::@fragment::package:test/d.dart
     <testLibrary>::@fragment::package:test/d.dart
-      enclosingElement: <testLibrary>::@augmentation::package:test/d.dart
+      enclosingElement: <testLibrary>
       enclosingElement3: <testLibrary>::@fragment::package:test/c.dart
       libraryExports
         package:test/b.dart
@@ -1590,32 +1608,37 @@
 ''');
   }
 
-  test_exportScope_augmentation_variable() async {
+  test_exportScope_part_variable() async {
     newFile('$testPackageLibPath/a.dart', r'''
-augment library 'test.dart';
+part of 'test.dart';
 int a = 0;
 ''');
+
     var library = await buildLibrary(r'''
-import augment 'a.dart';
+part 'a.dart';
 ''');
+
     configuration.withExportScope = true;
     checkElementText(library, r'''
 library
   reference: <testLibrary>
   definingUnit: <testLibraryFragment>
-  augmentationImports
-    package:test/a.dart
-      enclosingElement: <testLibrary>
-      reference: <testLibrary>::@augmentation::package:test/a.dart
-      definingUnit: <testLibrary>::@fragment::package:test/a.dart
+  parts
+    part_0
   units
     <testLibraryFragment>
       enclosingElement: <testLibrary>
+      parts
+        part_0
+          uri: package:test/a.dart
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibraryFragment>
+          unit: <testLibrary>::@fragment::package:test/a.dart
     <testLibrary>::@fragment::package:test/a.dart
-      enclosingElement: <testLibrary>::@augmentation::package:test/a.dart
+      enclosingElement: <testLibrary>
       enclosingElement3: <testLibraryFragment>
       topLevelVariables
-        static a @33
+        static a @25
           reference: <testLibrary>::@fragment::package:test/a.dart::@topLevelVariable::a
           enclosingElement: <testLibrary>::@fragment::package:test/a.dart
           type: int
@@ -1653,39 +1676,44 @@
 ''');
   }
 
-  test_exportScope_augmentation_variable_const() async {
+  test_exportScope_part_variable_const() async {
     newFile('$testPackageLibPath/a.dart', r'''
-augment library 'test.dart';
+part of 'test.dart';
 const a = 0;
 ''');
+
     var library = await buildLibrary(r'''
-import augment 'a.dart';
+part 'a.dart';
 ''');
+
     configuration.withExportScope = true;
     checkElementText(library, r'''
 library
   reference: <testLibrary>
   definingUnit: <testLibraryFragment>
-  augmentationImports
-    package:test/a.dart
-      enclosingElement: <testLibrary>
-      reference: <testLibrary>::@augmentation::package:test/a.dart
-      definingUnit: <testLibrary>::@fragment::package:test/a.dart
+  parts
+    part_0
   units
     <testLibraryFragment>
       enclosingElement: <testLibrary>
+      parts
+        part_0
+          uri: package:test/a.dart
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibraryFragment>
+          unit: <testLibrary>::@fragment::package:test/a.dart
     <testLibrary>::@fragment::package:test/a.dart
-      enclosingElement: <testLibrary>::@augmentation::package:test/a.dart
+      enclosingElement: <testLibrary>
       enclosingElement3: <testLibraryFragment>
       topLevelVariables
-        static const a @35
+        static const a @27
           reference: <testLibrary>::@fragment::package:test/a.dart::@topLevelVariable::a
           enclosingElement: <testLibrary>::@fragment::package:test/a.dart
           type: int
           shouldUseTypeForInitializerInference: false
           constantInitializer
             IntegerLiteral
-              literal: 0 @39
+              literal: 0 @31
               staticType: int
       accessors
         synthetic static get a @-1
@@ -1904,56 +1932,6 @@
 ''');
   }
 
-  test_libraryExports_part() async {
-    newFile('$testPackageLibPath/a.dart', r'''
-part of 'test.dart';
-export 'dart:math';
-''');
-
-    var library = await buildLibrary(r'''
-export 'dart:io';
-part 'a.dart';
-''');
-
-    checkElementText(library, r'''
-library
-  reference: <testLibrary>
-  libraryExports
-    dart:io
-      enclosingElement: <testLibrary>
-      enclosingElement3: <testLibraryFragment>
-  definingUnit: <testLibraryFragment>
-  parts
-    part_0
-  units
-    <testLibraryFragment>
-      enclosingElement: <testLibrary>
-      libraryExports
-        dart:io
-          enclosingElement: <testLibrary>
-          enclosingElement3: <testLibraryFragment>
-      parts
-        part_0
-          uri: package:test/a.dart
-          enclosingElement: <testLibrary>
-          enclosingElement3: <testLibraryFragment>
-          unit: <testLibrary>::@fragment::package:test/a.dart
-    <testLibrary>::@fragment::package:test/a.dart
-      enclosingElement: <testLibrary>
-      enclosingElement3: <testLibraryFragment>
-      libraryExports
-        dart:math
-          enclosingElement: <testLibrary>
-          enclosingElement3: <testLibrary>::@fragment::package:test/a.dart
-----------------------------------------
-library
-  reference: <testLibrary>
-  fragments
-    <testLibraryFragment>
-    <testLibrary>::@fragment::package:test/a.dart
-''');
-  }
-
   test_unresolved_export() async {
     var library = await buildLibrary("export 'foo.dart';");
     checkElementText(library, r'''
diff --git a/pkg/analyzer/test/src/summary/elements/library_fragment_test.dart b/pkg/analyzer/test/src/summary/elements/library_fragment_test.dart
index e6acb9e..381faec 100644
--- a/pkg/analyzer/test/src/summary/elements/library_fragment_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/library_fragment_test.dart
@@ -23,6 +23,220 @@
 }
 
 abstract class LibraryFragmentElementTest extends ElementsBaseTest {
+  test_libraryExports() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+part of 'test.dart';
+export 'dart:math';
+''');
+
+    var library = await buildLibrary(r'''
+export 'dart:io';
+part 'a.dart';
+''');
+
+    checkElementText(library, r'''
+library
+  reference: <testLibrary>
+  libraryExports
+    dart:io
+      enclosingElement: <testLibrary>
+      enclosingElement3: <testLibraryFragment>
+  definingUnit: <testLibraryFragment>
+  parts
+    part_0
+  units
+    <testLibraryFragment>
+      enclosingElement: <testLibrary>
+      libraryExports
+        dart:io
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibraryFragment>
+      parts
+        part_0
+          uri: package:test/a.dart
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibraryFragment>
+          unit: <testLibrary>::@fragment::package:test/a.dart
+    <testLibrary>::@fragment::package:test/a.dart
+      enclosingElement: <testLibrary>
+      enclosingElement3: <testLibraryFragment>
+      libraryExports
+        dart:math
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibrary>::@fragment::package:test/a.dart
+----------------------------------------
+library
+  reference: <testLibrary>
+  fragments
+    <testLibraryFragment>
+    <testLibrary>::@fragment::package:test/a.dart
+''');
+  }
+
+  test_libraryExports_metadata() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+part of 'test.dart';
+@deprecated
+export 'dart:math';
+''');
+
+    var library = await buildLibrary(r'''
+part 'a.dart';
+''');
+
+    checkElementText(library, r'''
+library
+  reference: <testLibrary>
+  definingUnit: <testLibraryFragment>
+  parts
+    part_0
+  units
+    <testLibraryFragment>
+      enclosingElement: <testLibrary>
+      parts
+        part_0
+          uri: package:test/a.dart
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibraryFragment>
+          unit: <testLibrary>::@fragment::package:test/a.dart
+    <testLibrary>::@fragment::package:test/a.dart
+      enclosingElement: <testLibrary>
+      enclosingElement3: <testLibraryFragment>
+      libraryExports
+        dart:math
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibrary>::@fragment::package:test/a.dart
+          metadata
+            Annotation
+              atSign: @ @21
+              name: SimpleIdentifier
+                token: deprecated @22
+                staticElement: dart:core::<fragment>::@getter::deprecated
+                staticType: null
+              element: dart:core::<fragment>::@getter::deprecated
+----------------------------------------
+library
+  reference: <testLibrary>
+  fragments
+    <testLibraryFragment>
+    <testLibrary>::@fragment::package:test/a.dart
+''');
+  }
+
+  test_libraryImports() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+part of 'test.dart';
+import 'dart:math';
+''');
+
+    var library = await buildLibrary(r'''
+import 'dart:io';
+part 'a.dart';
+''');
+
+    checkElementText(library, r'''
+library
+  reference: <testLibrary>
+  libraryImports
+    dart:io
+      enclosingElement: <testLibrary>
+      enclosingElement3: <testLibraryFragment>
+  definingUnit: <testLibraryFragment>
+  parts
+    part_0
+  units
+    <testLibraryFragment>
+      enclosingElement: <testLibrary>
+      libraryImports
+        dart:io
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibraryFragment>
+      parts
+        part_0
+          uri: package:test/a.dart
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibraryFragment>
+          unit: <testLibrary>::@fragment::package:test/a.dart
+    <testLibrary>::@fragment::package:test/a.dart
+      enclosingElement: <testLibrary>
+      enclosingElement3: <testLibraryFragment>
+      libraryImports
+        dart:math
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibrary>::@fragment::package:test/a.dart
+----------------------------------------
+library
+  reference: <testLibrary>
+  fragments
+    <testLibraryFragment>
+      libraryImports
+        dart:io
+    <testLibrary>::@fragment::package:test/a.dart
+      libraryImports
+        dart:math
+''');
+  }
+
+  test_libraryImports_metadata() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+part of 'test.dart';
+@deprecated
+import 'dart:math';
+''');
+
+    var library = await buildLibrary(r'''
+part 'a.dart';
+''');
+
+    checkElementText(library, r'''
+library
+  reference: <testLibrary>
+  definingUnit: <testLibraryFragment>
+  parts
+    part_0
+  units
+    <testLibraryFragment>
+      enclosingElement: <testLibrary>
+      parts
+        part_0
+          uri: package:test/a.dart
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibraryFragment>
+          unit: <testLibrary>::@fragment::package:test/a.dart
+    <testLibrary>::@fragment::package:test/a.dart
+      enclosingElement: <testLibrary>
+      enclosingElement3: <testLibraryFragment>
+      libraryImports
+        dart:math
+          enclosingElement: <testLibrary>
+          enclosingElement3: <testLibrary>::@fragment::package:test/a.dart
+          metadata
+            Annotation
+              atSign: @ @21
+              name: SimpleIdentifier
+                token: deprecated @22
+                staticElement: dart:core::<fragment>::@getter::deprecated
+                staticType: null
+              element: dart:core::<fragment>::@getter::deprecated
+----------------------------------------
+library
+  reference: <testLibrary>
+  fragments
+    <testLibraryFragment>
+    <testLibrary>::@fragment::package:test/a.dart
+      libraryImports
+        dart:math
+          metadata
+            Annotation
+              atSign: @ @21
+              name: SimpleIdentifier
+                token: deprecated @22
+                staticElement: dart:core::<fragment>::@getter::deprecated
+                staticType: null
+              element: dart:core::<fragment>::@getter::deprecated
+''');
+  }
+
   test_scope_accessibleExtensions_imported() async {
     newFile('$testPackageLibPath/x.dart', r'''
 extension X on int {}
diff --git a/pkg/analyzer/test/src/summary/elements/library_import_test.dart b/pkg/analyzer/test/src/summary/elements/library_import_test.dart
index 92040ad..46e751d 100644
--- a/pkg/analyzer/test/src/summary/elements/library_import_test.dart
+++ b/pkg/analyzer/test/src/summary/elements/library_import_test.dart
@@ -1211,120 +1211,6 @@
     expect(prefixNames, unorderedEquals(['p1', 'p2']));
   }
 
-  test_libraryImports_part() async {
-    newFile('$testPackageLibPath/a.dart', r'''
-part of 'test.dart';
-import 'dart:math';
-''');
-
-    var library = await buildLibrary(r'''
-import 'dart:io';
-part 'a.dart';
-''');
-
-    checkElementText(library, r'''
-library
-  reference: <testLibrary>
-  libraryImports
-    dart:io
-      enclosingElement: <testLibrary>
-      enclosingElement3: <testLibraryFragment>
-  definingUnit: <testLibraryFragment>
-  parts
-    part_0
-  units
-    <testLibraryFragment>
-      enclosingElement: <testLibrary>
-      libraryImports
-        dart:io
-          enclosingElement: <testLibrary>
-          enclosingElement3: <testLibraryFragment>
-      parts
-        part_0
-          uri: package:test/a.dart
-          enclosingElement: <testLibrary>
-          enclosingElement3: <testLibraryFragment>
-          unit: <testLibrary>::@fragment::package:test/a.dart
-    <testLibrary>::@fragment::package:test/a.dart
-      enclosingElement: <testLibrary>
-      enclosingElement3: <testLibraryFragment>
-      libraryImports
-        dart:math
-          enclosingElement: <testLibrary>
-          enclosingElement3: <testLibrary>::@fragment::package:test/a.dart
-----------------------------------------
-library
-  reference: <testLibrary>
-  fragments
-    <testLibraryFragment>
-      libraryImports
-        dart:io
-    <testLibrary>::@fragment::package:test/a.dart
-      libraryImports
-        dart:math
-''');
-  }
-
-  test_libraryImports_part_metadata() async {
-    newFile('$testPackageLibPath/a.dart', r'''
-part of 'test.dart';
-@deprecated
-import 'dart:math';
-''');
-
-    var library = await buildLibrary(r'''
-part 'a.dart';
-''');
-
-    checkElementText(library, r'''
-library
-  reference: <testLibrary>
-  definingUnit: <testLibraryFragment>
-  parts
-    part_0
-  units
-    <testLibraryFragment>
-      enclosingElement: <testLibrary>
-      parts
-        part_0
-          uri: package:test/a.dart
-          enclosingElement: <testLibrary>
-          enclosingElement3: <testLibraryFragment>
-          unit: <testLibrary>::@fragment::package:test/a.dart
-    <testLibrary>::@fragment::package:test/a.dart
-      enclosingElement: <testLibrary>
-      enclosingElement3: <testLibraryFragment>
-      libraryImports
-        dart:math
-          enclosingElement: <testLibrary>
-          enclosingElement3: <testLibrary>::@fragment::package:test/a.dart
-          metadata
-            Annotation
-              atSign: @ @21
-              name: SimpleIdentifier
-                token: deprecated @22
-                staticElement: dart:core::<fragment>::@getter::deprecated
-                staticType: null
-              element: dart:core::<fragment>::@getter::deprecated
-----------------------------------------
-library
-  reference: <testLibrary>
-  fragments
-    <testLibraryFragment>
-    <testLibrary>::@fragment::package:test/a.dart
-      libraryImports
-        dart:math
-          metadata
-            Annotation
-              atSign: @ @21
-              name: SimpleIdentifier
-                token: deprecated @22
-                staticElement: dart:core::<fragment>::@getter::deprecated
-                staticType: null
-              element: dart:core::<fragment>::@getter::deprecated
-''');
-  }
-
   test_metadata_importDirective() async {
     var library = await buildLibrary('''
 @a