De-duplicate refactoringContext in RefactoringProducer.
Change-Id: Ia1dcbaf301d37d977b22742bf8198c64f7d34159
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/311159
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analysis_server/lib/src/services/refactoring/framework/refactoring_producer.dart b/pkg/analysis_server/lib/src/services/refactoring/framework/refactoring_producer.dart
index c8dbb88..a9b0865 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/framework/refactoring_producer.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/framework/refactoring_producer.dart
@@ -17,15 +17,14 @@
/// An object that can compute a refactoring in a Dart file.
abstract class RefactoringProducer {
/// The context in which the refactoring was requested.
- final RefactoringContext _context;
+ final RefactoringContext refactoringContext;
- /// Initialize a newly created refactoring producer to create a refactoring in
- /// the given [_context].
- RefactoringProducer(this._context);
+ /// Initialize a newly created refactoring producer.
+ RefactoringProducer(this.refactoringContext);
/// The most deeply nested node whose range completely includes the range of
/// characters described by [selectionOffset] and [selectionLength].
- AstNode? get coveringNode => _context.coveringNode;
+ AstNode? get coveringNode => refactoringContext.coveringNode;
/// Return whether this refactor is considered experimental and will only
/// be included if the user has opted-in.
@@ -39,47 +38,50 @@
/// Return the result of resolving the library in which the refactoring was
/// invoked.
- ResolvedLibraryResult get libraryResult => _context.resolvedLibraryResult;
+ ResolvedLibraryResult get libraryResult {
+ return refactoringContext.resolvedLibraryResult;
+ }
/// Return a list of the parameters to send to the client.
List<CommandParameter> get parameters;
- RefactoringContext get refactoringContext => _context;
-
/// Return the search engine used to search outside the resolved library.
- SearchEngine get searchEngine => _context.searchEngine;
+ SearchEngine get searchEngine => refactoringContext.searchEngine;
/// Return the selection, or `null` if the selection is not valid.
- Selection? get selection => _context.selection;
+ Selection? get selection => refactoringContext.selection;
/// Return the offset of the first character after the selection range.
- int get selectionEnd => _context.selectionEnd;
+ int get selectionEnd => refactoringContext.selectionEnd;
/// Return the number of selected characters.
- int get selectionLength => _context.selectionLength;
+ int get selectionLength => refactoringContext.selectionLength;
/// Return the offset of the beginning of the selection range.
- int get selectionOffset => _context.selectionOffset;
+ int get selectionOffset => refactoringContext.selectionOffset;
/// Return the helper used to efficiently access resolved units.
- AnalysisSessionHelper get sessionHelper => _context.sessionHelper;
+ AnalysisSessionHelper get sessionHelper => refactoringContext.sessionHelper;
/// Return `true` if the client has support for creating files. Subclasses
/// that require the ability to create new files must not create a refactoring
/// if this getter returns `false`.
- bool get supportsFileCreation =>
- _context.server.clientCapabilities?.documentChanges == true &&
- _context.server.clientCapabilities?.createResourceOperations == true;
+ bool get supportsFileCreation {
+ final capabilities = refactoringContext.server.clientCapabilities;
+ return capabilities != null &&
+ capabilities.documentChanges == true &&
+ capabilities.createResourceOperations == true;
+ }
/// Return the title of this refactoring.
String get title;
/// Return the result of resolving the file in which the refactoring was
/// invoked.
- ResolvedUnitResult get unitResult => _context.resolvedUnitResult;
+ ResolvedUnitResult get unitResult => refactoringContext.resolvedUnitResult;
/// Return the correction utilities for this refactoring.
- CorrectionUtils get utils => _context.utils;
+ CorrectionUtils get utils => refactoringContext.utils;
/// Given the [commandArguments] associated with the command, use the
/// [builder] to generate the edits necessary to apply this refactoring.
@@ -89,15 +91,17 @@
bool isAvailable();
/// Return `true` if the selection is inside the given [token].
- bool selectionIsInToken(Token? token) => _context.selectionIsInToken(token);
+ bool selectionIsInToken(Token? token) {
+ return refactoringContext.selectionIsInToken(token);
+ }
/// Return `true` if the client has support for command parameters of the
/// provided `kind`. Subclasses that produce command parameters of this kind
/// that don't have a default value must not create a refactoring if this
/// returns `false`.
- bool supportsCommandParameter(String kind) =>
- _context
- .server.clientCapabilities?.codeActionCommandParameterSupportedKinds
- .contains(kind) ??
- false;
+ bool supportsCommandParameter(String kind) {
+ final capabilities = refactoringContext.server.clientCapabilities;
+ return capabilities != null &&
+ capabilities.codeActionCommandParameterSupportedKinds.contains(kind);
+ }
}