Test sibling library discovery.

Change-Id: Ie6f291098c2a7f206eca5983b25060b4f91f0591
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/250144
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/analyzer/test/src/dart/analysis/file_state_test.dart b/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
index a08b015..b121f74 100644
--- a/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
@@ -2693,7 +2693,6 @@
 ''');
   }
 
-  /// TODO(scheglov) Test discovery of a sibling library
   test_newFile_partOfName() async {
     final a = newFile('$testPackageLibPath/nested/a.dart', r'''
 library my.lib;
@@ -2833,6 +2832,53 @@
 ''');
   }
 
+  test_newFile_partOfName_discoverSiblingLibrary() async {
+    final a = newFile('$testPackageLibPath/a.dart', r'''
+library my.lib;
+part 'b.dart';
+''');
+
+    final b = newFile('$testPackageLibPath/b.dart', r'''
+part of my.lib;
+''');
+
+    final bState = fileStateFor(b);
+
+    // The library is discovered by looking at sibling files.
+    final bKind = bState.kind as PartOfNameFileStateKind;
+    expect(bKind.library?.file.resource, a);
+
+    assertDriverStateString(testFile, r'''
+files
+  /home/test/lib/a.dart
+    uri: package:test/a.dart
+    current
+      id: file_0
+      kind: library_0
+        name: my.lib
+        imports
+          library_2 dart:core synthetic
+        parts
+          partOfName_1
+        cycle_0
+          dependencies: dart:core
+          libraries: library_0
+          apiSignature_0
+      unlinkedKey: k00
+  /home/test/lib/b.dart
+    uri: package:test/b.dart
+    current
+      id: file_1
+      kind: partOfName_1
+        libraries: library_0
+        library: library_0
+      referencingFiles: file_0
+      unlinkedKey: k01
+libraryCycles
+elementFactory
+''');
+  }
+
   test_newFile_partOfName_twoLibraries() async {
     final a = newFile('$testPackageLibPath/a.dart', r'''
 library my.lib;