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;