privilege access to analyzer src in completions from `package:linter`

Change-Id: Ia021f032f5d409535f7aa54704f1bfef55304a2d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/365983
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Phil Quitslund <pquitslund@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 c453bd5..c3a57b5 100644
--- a/pkg/analyzer/lib/src/dart/analysis/file_state_filter.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/file_state_filter.dart
@@ -59,7 +59,10 @@
 class _PubFilter implements FileStateFilter {
   final PubPackage targetPackage;
   final String? targetPackageName;
-  final bool targetPackageIsAnalysisServer;
+
+  /// "Friends of `package:analyzer` see analyzer implementation libraries in
+  /// completions.
+  final bool targetPackageIsFriendOfAnalyzer;
   final bool targetInLibOrEntryPoint;
   final Set<String> dependencies;
 
@@ -84,7 +87,8 @@
     return _PubFilter._(
       targetPackage: package,
       targetPackageName: packageName,
-      targetPackageIsAnalysisServer: packageName == 'analysis_server',
+      targetPackageIsFriendOfAnalyzer:
+          packageName == 'analysis_server' || packageName == 'linter',
       targetInLibOrEntryPoint: inLibOrEntryPoint,
       dependencies: dependencies,
     );
@@ -93,7 +97,7 @@
   _PubFilter._({
     required this.targetPackage,
     required this.targetPackageName,
-    required this.targetPackageIsAnalysisServer,
+    required this.targetPackageIsFriendOfAnalyzer,
     required this.targetInLibOrEntryPoint,
     required this.dependencies,
   });
@@ -125,8 +129,9 @@
 
     // If not the same package, must be public.
     if (uri.isSrc) {
-      // Special case `analysis_server` access to `analyzer`.
-      if (targetPackageIsAnalysisServer && packageName == 'analyzer') {
+      // Special case access to `analyzer` to allow privileged access
+      // from "friends" like `analysis_server` and `linter`.
+      if (targetPackageIsFriendOfAnalyzer && packageName == 'analyzer') {
         return true;
       }
       return false;