Allow analysis_server/ access not yet imported libraries from src/ in analyzer/.

Change-Id: I0b4119965bdb83149117a02f885fe8362f69915f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/296502
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/lib/src/dart/analysis/file_state_filter.dart b/pkg/analyzer/lib/src/dart/analysis/file_state_filter.dart
index 81e213a..4b374c4 100644
--- a/pkg/analyzer/lib/src/dart/analysis/file_state_filter.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/file_state_filter.dart
@@ -59,6 +59,7 @@
 class _PubFilter implements FileStateFilter {
   final PubWorkspacePackage targetPackage;
   final String? targetPackageName;
+  final bool targetPackageIsAnalysisServer;
   final bool targetInLib;
   final Set<String> dependencies;
 
@@ -77,9 +78,12 @@
       }
     }
 
+    var packageName = pubspec?.name?.value.text;
+
     return _PubFilter._(
       targetPackage: package,
-      targetPackageName: pubspec?.name?.value.text,
+      targetPackageName: packageName,
+      targetPackageIsAnalysisServer: packageName == 'analysis_server',
       targetInLib: inLib,
       dependencies: dependencies,
     );
@@ -88,6 +92,7 @@
   _PubFilter._({
     required this.targetPackage,
     required this.targetPackageName,
+    required this.targetPackageIsAnalysisServer,
     required this.targetInLib,
     required this.dependencies,
   });
@@ -119,6 +124,10 @@
 
     // If not the same package, must be public.
     if (uri.isSrc) {
+      // Special case `analysis_server` access to `analyzer`.
+      if (targetPackageIsAnalysisServer && packageName == 'analyzer') {
+        return true;
+      }
       return false;
     }