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;