From 726fc33e0a8bb9027faeeeb4939bbc2dac554dba Mon Sep 17 00:00:00 2001 From: Konstantin Shcheglov Date: Mon, 15 Jul 2024 20:31:19 +0000 Subject: [PATCH] API. Deprecate 'ContextLocator' and 'ContextBuilder'. Bug: https://github.com/dart-lang/sdk/issues/56102 Change-Id: Ia55b978571e412ea7b6b7c4b6cc482f731ecdc1a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/375760 Commit-Queue: Konstantin Shcheglov Reviewed-by: Brian Wilkerson Reviewed-by: Samuel Rawlins Reviewed-by: Bob Nystrom --- .../lib/src/lsp/lsp_analysis_server.dart | 4 ++-- pkg/analyzer/CHANGELOG.md | 2 ++ .../lib/dart/analysis/context_builder.dart | 1 + .../lib/dart/analysis/context_locator.dart | 1 + .../analysis/analysis_context_collection.dart | 4 ++-- .../lib/src/dart/analysis/context_builder.dart | 1 + .../lib/src/dart/analysis/context_locator.dart | 1 + pkg/test_runner/tool/orphan_files.dart | 17 +++++++++++------ 8 files changed, 21 insertions(+), 10 deletions(-) diff --git a/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart b/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart index 35289edf3c9..1a5d463fc60 100644 --- a/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart +++ b/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart @@ -31,13 +31,13 @@ import 'package:analysis_server/src/server/performance.dart'; import 'package:analysis_server/src/services/user_prompts/dart_fix_prompt_manager.dart'; import 'package:analysis_server/src/utilities/extensions/flutter.dart'; import 'package:analysis_server/src/utilities/process.dart'; -import 'package:analyzer/dart/analysis/context_locator.dart'; import 'package:analyzer/dart/analysis/results.dart'; import 'package:analyzer/dart/analysis/session.dart'; import 'package:analyzer/error/error.dart'; import 'package:analyzer/exception/exception.dart'; import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/instrumentation/instrumentation.dart'; +import 'package:analyzer/src/dart/analysis/context_locator.dart'; import 'package:analyzer/src/dart/analysis/status.dart' as analysis; import 'package:analyzer/src/generated/sdk.dart'; import 'package:analyzer/src/util/file_paths.dart' as file_paths; @@ -984,7 +984,7 @@ class LspAnalysisServer extends AnalysisServer { /// This is used when there are no workspace folders open directly. List _getRootsForOpenFiles() { var openFiles = priorityFiles.toList(); - var contextLocator = ContextLocator(resourceProvider: resourceProvider); + var contextLocator = ContextLocatorImpl(resourceProvider: resourceProvider); var roots = contextLocator.locateRoots(includedPaths: openFiles); var packages = {}; diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md index fab54ab4c99..0d0d8241369 100644 --- a/pkg/analyzer/CHANGELOG.md +++ b/pkg/analyzer/CHANGELOG.md @@ -1,5 +1,7 @@ ## 6.8.0-dev * Add `AnalysisContextCollection.dispose()`. It must be invoked at the end. +* Deprecated `ContextLocator` and `ContextBuilder`. + Use `AnalysisContextCollection` instead. ## 6.7.0 * Deprecated `File.createSource()`, it violates levels of abstraction. diff --git a/pkg/analyzer/lib/dart/analysis/context_builder.dart b/pkg/analyzer/lib/dart/analysis/context_builder.dart index 35da6ba3238..68c56418d82 100644 --- a/pkg/analyzer/lib/dart/analysis/context_builder.dart +++ b/pkg/analyzer/lib/dart/analysis/context_builder.dart @@ -11,6 +11,7 @@ import 'package:analyzer/src/dart/analysis/context_builder.dart'; /// A utility class used to build an analysis context based on a context root. /// /// Clients may not extend, implement or mix-in this class. +@Deprecated('Use AnalysisContextCollection instead') abstract class ContextBuilder { /// Initialize a newly created context builder. If a [resourceProvider] is /// given, then it will be used to access the file system, otherwise the diff --git a/pkg/analyzer/lib/dart/analysis/context_locator.dart b/pkg/analyzer/lib/dart/analysis/context_locator.dart index a4e0375aff5..47d7461d086 100644 --- a/pkg/analyzer/lib/dart/analysis/context_locator.dart +++ b/pkg/analyzer/lib/dart/analysis/context_locator.dart @@ -11,6 +11,7 @@ import 'package:analyzer/src/dart/analysis/context_locator.dart'; /// folders and a list of excluded files and folders. /// /// Clients may not extend, implement or mix-in this class. +@Deprecated('Use AnalysisContextCollection instead') abstract class ContextLocator { /// Initialize a newly created context locator. If a [resourceProvider] is /// supplied, it will be used to access the file system. Otherwise the default diff --git a/pkg/analyzer/lib/src/dart/analysis/analysis_context_collection.dart b/pkg/analyzer/lib/src/dart/analysis/analysis_context_collection.dart index fe2e4610e4d..15d9426267e 100644 --- a/pkg/analyzer/lib/src/dart/analysis/analysis_context_collection.dart +++ b/pkg/analyzer/lib/src/dart/analysis/analysis_context_collection.dart @@ -3,13 +3,13 @@ // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/dart/analysis/analysis_context_collection.dart'; -import 'package:analyzer/dart/analysis/context_locator.dart'; import 'package:analyzer/dart/analysis/context_root.dart'; import 'package:analyzer/dart/analysis/declared_variables.dart'; import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/file_system/physical_file_system.dart'; import 'package:analyzer/src/dart/analysis/byte_store.dart'; import 'package:analyzer/src/dart/analysis/context_builder.dart'; +import 'package:analyzer/src/dart/analysis/context_locator.dart'; import 'package:analyzer/src/dart/analysis/driver.dart'; import 'package:analyzer/src/dart/analysis/driver_based_analysis_context.dart'; import 'package:analyzer/src/dart/analysis/file_content_cache.dart'; @@ -91,7 +91,7 @@ class AnalysisContextCollectionImpl implements AnalysisContextCollection { // ignore: prefer_initializing_formals this.macroSupportFactory = macroSupportFactory; - var contextLocator = ContextLocator( + var contextLocator = ContextLocatorImpl( resourceProvider: this.resourceProvider, ); var roots = contextLocator.locateRoots( diff --git a/pkg/analyzer/lib/src/dart/analysis/context_builder.dart b/pkg/analyzer/lib/src/dart/analysis/context_builder.dart index 4948713d752..4e36afca8a3 100644 --- a/pkg/analyzer/lib/src/dart/analysis/context_builder.dart +++ b/pkg/analyzer/lib/src/dart/analysis/context_builder.dart @@ -42,6 +42,7 @@ import 'package:analyzer/src/util/sdk.dart'; import 'package:analyzer/src/workspace/workspace.dart'; /// An implementation of a context builder. +// ignore:deprecated_member_use_from_same_package class ContextBuilderImpl implements ContextBuilder { /// The resource provider used to access the file system. final ResourceProvider resourceProvider; diff --git a/pkg/analyzer/lib/src/dart/analysis/context_locator.dart b/pkg/analyzer/lib/src/dart/analysis/context_locator.dart index dcb13c4c545..ae7358f2404 100644 --- a/pkg/analyzer/lib/src/dart/analysis/context_locator.dart +++ b/pkg/analyzer/lib/src/dart/analysis/context_locator.dart @@ -26,6 +26,7 @@ import 'package:path/path.dart'; import 'package:yaml/yaml.dart'; /// An implementation of a context locator. +// ignore:deprecated_member_use_from_same_package class ContextLocatorImpl implements ContextLocator { /// A flag indicating if analysis contexts are limited to one corresponding /// analysis options file. diff --git a/pkg/test_runner/tool/orphan_files.dart b/pkg/test_runner/tool/orphan_files.dart index 8021b099528..d9217e49a25 100644 --- a/pkg/test_runner/tool/orphan_files.dart +++ b/pkg/test_runner/tool/orphan_files.dart @@ -13,8 +13,7 @@ library; import 'dart:io'; import 'package:analyzer/dart/analysis/analysis_context.dart'; -import 'package:analyzer/dart/analysis/context_builder.dart'; -import 'package:analyzer/dart/analysis/context_locator.dart'; +import 'package:analyzer/dart/analysis/analysis_context_collection.dart'; import 'package:analyzer/dart/analysis/results.dart'; import 'package:analyzer/dart/ast/ast.dart'; import 'package:test_runner/src/path.dart'; @@ -65,12 +64,18 @@ void _checkTestDirectory(Directory directory) { } void _initAnalysisContext() { - var roots = ContextLocator().locateRoots(includedPaths: ['test']); - if (roots.length != 1) { - throw StateError('Expected to find exactly one context root, got $roots'); + var collection = AnalysisContextCollection( + includedPaths: ['test'], + ); + + if (collection.contexts.length != 1) { + throw StateError( + 'Expected to find exactly one context root, ' + 'got ${collection.contexts.length}', + ); } - _analysisContext = ContextBuilder().createContext(contextRoot: roots[0]); + _analysisContext = collection.contexts.single; } void _parseReferences(Set importedPaths, String filePath) {