Version 2.15.0-252.0.dev
Merge commit '873005502d9199587d5ef686d5341871d07100bc' into 'dev'
diff --git a/pkg/analysis_server/lib/src/cider/completion.dart b/pkg/analysis_server/lib/src/cider/completion.dart
index 214d3f2..5051a51 100644
--- a/pkg/analysis_server/lib/src/cider/completion.dart
+++ b/pkg/analysis_server/lib/src/cider/completion.dart
@@ -3,8 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/protocol_server.dart';
-import 'package:analysis_server/src/services/completion/completion_core.dart';
-import 'package:analysis_server/src/services/completion/completion_performance.dart';
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/fuzzy_filter_sort.dart';
import 'package:analysis_server/src/services/completion/dart/local_library_contributor.dart';
@@ -32,7 +30,7 @@
final OperationPerformanceImpl _performanceRoot =
OperationPerformanceImpl('<root>');
- late DartCompletionRequestImpl _dartCompletionRequest;
+ late DartCompletionRequest _dartCompletionRequest;
/// Paths of imported libraries for which suggestions were (re)computed
/// during processing of this request. Does not include libraries that were
@@ -72,14 +70,9 @@
var lineInfo = resolvedUnit.lineInfo;
var offset = lineInfo.getOffsetOfLine(line) + column;
- var completionRequest = CompletionRequestImpl(
- resolvedUnit,
- offset,
- CompletionPerformance(),
- );
-
- _dartCompletionRequest = DartCompletionRequestImpl.from(
- completionRequest,
+ _dartCompletionRequest = DartCompletionRequest.from(
+ resolvedUnit: resolvedUnit,
+ offset: offset,
);
var suggestions = await performance.runAsync(
diff --git a/pkg/analysis_server/lib/src/domain_completion.dart b/pkg/analysis_server/lib/src/domain_completion.dart
index 69d0dec..9ae5561 100644
--- a/pkg/analysis_server/lib/src/domain_completion.dart
+++ b/pkg/analysis_server/lib/src/domain_completion.dart
@@ -13,7 +13,6 @@
import 'package:analysis_server/src/domains/completion/available_suggestions.dart';
import 'package:analysis_server/src/plugin/plugin_manager.dart';
import 'package:analysis_server/src/provisional/completion/completion_core.dart';
-import 'package:analysis_server/src/services/completion/completion_core.dart';
import 'package:analysis_server/src/services/completion/completion_performance.dart';
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/yaml/analysis_options_generator.dart';
@@ -51,7 +50,7 @@
RecentBuffer<CompletionPerformance>(performanceListMaxLength);
/// The current request being processed or `null` if none.
- CompletionRequestImpl? _currentRequest;
+ DartCompletionRequest? _currentRequest;
/// The identifiers of the latest `getSuggestionDetails` request.
/// We use it to abort previous requests.
@@ -67,19 +66,19 @@
/// result to the [controller], and close the controller stream once complete.
Future<CompletionResult> computeSuggestions(
OperationPerformanceImpl perf,
- CompletionRequestImpl request,
+ DartCompletionRequest request,
CompletionGetSuggestionsParams params,
Set<ElementKind>? includedElementKinds,
Set<String>? includedElementNames,
List<IncludedSuggestionRelevanceTag>? includedSuggestionRelevanceTags,
) async {
+ var file = params.file;
+ var offset = params.offset;
//
// Allow plugins to start computing fixes.
//
Map<PluginInfo, Future<plugin.Response>>? pluginFutures;
plugin.CompletionGetSuggestionsParams? requestParams;
- var file = params.file;
- var offset = params.offset;
var driver = server.getAnalysisDriver(file);
if (driver != null) {
requestParams = plugin.CompletionGetSuggestionsParams(file, offset);
@@ -102,16 +101,9 @@
var contributorTag = 'computeSuggestions - ${manager.runtimeType}';
await perf.runAsync(contributorTag, (performance) async {
- var dartRequest = DartCompletionRequestImpl.from(
- request,
- dartdocDirectiveInfo: server.getDartdocDirectiveInfoFor(
- request.result,
- ),
- documentationCache: server.getDocumentationCacheFor(request.result),
- );
try {
suggestions.addAll(
- await manager.computeSuggestions(dartRequest, performance),
+ await manager.computeSuggestions(request, performance),
);
} on AbortCompletion {
suggestions.clear();
@@ -131,10 +123,7 @@
var result =
plugin.CompletionGetSuggestionsResult.fromResponse(response);
if (result.results.isNotEmpty) {
- if (suggestions.isEmpty) {
- request.replacementOffset = result.replacementOffset;
- request.replacementLength = result.replacementLength;
- } else if (request.replacementOffset != result.replacementOffset &&
+ if (request.replacementOffset != result.replacementOffset &&
request.replacementLength != result.replacementLength) {
server.instrumentationService
.logError('Plugin completion-results dropped due to conflicting'
@@ -276,8 +265,8 @@
});
}
- void ifMatchesRequestClear(CompletionRequest completionRequest) {
- if (_currentRequest == completionRequest) {
+ void ifMatchesRequestClear(DartCompletionRequest request) {
+ if (_currentRequest == request) {
_currentRequest = null;
}
}
@@ -349,8 +338,15 @@
request.id, 'Completion is not enabled.'));
return;
}
- var completionRequest =
- CompletionRequestImpl(resolvedUnit, offset, performance);
+
+ var completionRequest = DartCompletionRequest.from(
+ resolvedUnit: resolvedUnit,
+ offset: offset,
+ dartdocDirectiveInfo: server.getDartdocDirectiveInfoFor(
+ resolvedUnit,
+ ),
+ documentationCache: server.getDocumentationCacheFor(resolvedUnit),
+ );
var completionId = (_nextCompletionId++).toString();
@@ -455,9 +451,9 @@
);
}
- void setNewRequest(CompletionRequestImpl completionRequest) {
+ void setNewRequest(DartCompletionRequest request) {
_abortCurrentRequest();
- _currentRequest = completionRequest;
+ _currentRequest = request;
}
/// Implement the 'completion.setSubscriptions' request.
diff --git a/pkg/analysis_server/lib/src/domains/execution/completion.dart b/pkg/analysis_server/lib/src/domains/execution/completion.dart
index 346dc00..1f20a26 100644
--- a/pkg/analysis_server/lib/src/domains/execution/completion.dart
+++ b/pkg/analysis_server/lib/src/domains/execution/completion.dart
@@ -4,12 +4,11 @@
import 'package:analysis_server/src/protocol_server.dart'
show CompletionSuggestion, RuntimeCompletionExpression, SourceEdit;
-import 'package:analysis_server/src/services/completion/completion_core.dart';
-import 'package:analysis_server/src/services/completion/completion_performance.dart';
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/file_system/overlay_file_system.dart';
import 'package:analyzer/src/dart/analysis/driver.dart';
+import 'package:analyzer/src/util/performance/operation_performance.dart';
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
class RuntimeCompletionComputer {
@@ -70,21 +69,14 @@
return RuntimeCompletionResult([], []);
}
- var request = CompletionRequestImpl(
- targetResult,
- targetOffset,
- CompletionPerformance(),
+ var dartRequest = DartCompletionRequest.from(
+ resolvedUnit: targetResult,
+ offset: targetOffset,
);
- var dartRequest = DartCompletionRequestImpl.from(request);
-
- var suggestions = await request.performance.runRequestOperation(
- (performance) async {
- return await DartCompletionManager().computeSuggestions(
- dartRequest,
- performance,
- );
- },
+ var suggestions = await DartCompletionManager().computeSuggestions(
+ dartRequest,
+ OperationPerformanceImpl('<root>'),
);
// Remove completions with synthetic import prefixes.
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart
index 80aa6a3..0142b07 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart
@@ -14,7 +14,6 @@
import 'package:analysis_server/src/lsp/lsp_analysis_server.dart';
import 'package:analysis_server/src/lsp/mapping.dart';
import 'package:analysis_server/src/provisional/completion/completion_core.dart';
-import 'package:analysis_server/src/services/completion/completion_core.dart';
import 'package:analysis_server/src/services/completion/completion_performance.dart';
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/filtering/fuzzy_matcher.dart';
@@ -209,16 +208,13 @@
server.performanceStats.completion.add(performance);
return await performance.runRequestOperation((perf) async {
- final completionRequest =
- CompletionRequestImpl(unit, offset, performance);
- final directiveInfo =
- server.getDartdocDirectiveInfoFor(completionRequest.result);
- final dartCompletionRequest = DartCompletionRequestImpl.from(
- completionRequest,
- dartdocDirectiveInfo: directiveInfo,
+ final completionRequest = DartCompletionRequest.from(
+ resolvedUnit: unit,
+ offset: offset,
+ dartdocDirectiveInfo: server.getDartdocDirectiveInfoFor(unit),
completionPreference: CompletionPreference.replace,
);
- final target = dartCompletionRequest.target;
+ final target = completionRequest.target;
if (triggerCharacter != null) {
if (!_triggerCharacterValid(offset, triggerCharacter, target)) {
@@ -243,7 +239,7 @@
);
final serverSuggestions = await contributor.computeSuggestions(
- dartCompletionRequest,
+ completionRequest,
perf,
);
@@ -401,7 +397,7 @@
// Perform fuzzy matching based on the identifier in front of the caret to
// reduce the size of the payload.
- final fuzzyPattern = dartCompletionRequest.targetPrefix;
+ final fuzzyPattern = completionRequest.targetPrefix;
final fuzzyMatcher =
FuzzyMatcher(fuzzyPattern, matchStyle: MatchStyle.TEXT);
diff --git a/pkg/analysis_server/lib/src/provisional/completion/completion_core.dart b/pkg/analysis_server/lib/src/provisional/completion/completion_core.dart
index 542af9c..ebfe36f 100644
--- a/pkg/analysis_server/lib/src/provisional/completion/completion_core.dart
+++ b/pkg/analysis_server/lib/src/provisional/completion/completion_core.dart
@@ -2,10 +2,6 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-import 'package:analyzer/dart/analysis/results.dart';
-import 'package:analyzer/file_system/file_system.dart';
-import 'package:analyzer/src/generated/source.dart';
-
/// [AbortCompletion] is thrown when the current completion request
/// should be aborted because either
/// the source changed since the request was made, or
@@ -29,29 +25,3 @@
insert,
replace,
}
-
-/// The information about a requested list of completions.
-///
-/// Clients may not extend, implement or mix-in this class.
-abstract class CompletionRequest {
- /// Return the offset within the source at which the completion is being
- /// requested.
- int get offset;
-
- /// Return the resource provider associated with this request.
- ResourceProvider get resourceProvider;
-
- /// The analysis result for the file in which the completion is being
- /// requested.
- ResolvedUnitResult get result;
-
- /// Return the source in which the completion is being requested.
- Source get source;
-
- /// Return the content of the [source] in which the completion is being
- /// requested, or `null` if the content could not be accessed.
- String? get sourceContents;
-
- /// Throw [AbortCompletion] if the completion request has been aborted.
- void checkAborted();
-}
diff --git a/pkg/analysis_server/lib/src/provisional/completion/dart/completion_dart.dart b/pkg/analysis_server/lib/src/provisional/completion/dart/completion_dart.dart
index 90c6495..69b06a8 100644
--- a/pkg/analysis_server/lib/src/provisional/completion/dart/completion_dart.dart
+++ b/pkg/analysis_server/lib/src/provisional/completion/dart/completion_dart.dart
@@ -2,17 +2,8 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-import 'package:analysis_server/src/provisional/completion/completion_core.dart';
-import 'package:analysis_server/src/services/completion/dart/feature_computer.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
-import 'package:analyzer/dart/analysis/features.dart';
-import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/element/element.dart';
-import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/src/dartdoc/dartdoc_directive_info.dart';
-import 'package:analyzer/src/generated/source.dart';
-import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
-import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
export 'package:analyzer_plugin/utilities/completion/relevance.dart';
@@ -28,64 +19,3 @@
/// given completion [request] have been added to the [builder].
Future<void> computeSuggestions();
}
-
-/// The information about a requested list of completions within a Dart file.
-///
-/// Clients may not extend, implement or mix-in this class.
-abstract class DartCompletionRequest extends CompletionRequest {
- CompletionPreference get completionPreference;
-
- /// Return the type imposed on the target's `containingNode` based on its
- /// context, or `null` if the context does not impose any type.
- DartType? get contextType;
-
- /// Return the object used to resolve macros in Dartdoc comments.
- DartdocDirectiveInfo get dartdocDirectiveInfo;
-
- /// Return the expression to the right of the "dot" or "dot dot",
- /// or `null` if this is not a "dot" completion (e.g. `foo.b`).
- Expression? get dotTarget;
-
- /// Return the object used to compute the values of the features used to
- /// compute relevance scores for suggestions.
- FeatureComputer get featureComputer;
-
- /// Return the feature set that was used to analyze the compilation unit in
- /// which suggestions are being made.
- FeatureSet get featureSet;
-
- /// Return `true` if free standing identifiers should be suggested
- bool get includeIdentifiers;
-
- /// Return `true` if the completion is occurring in a constant context.
- bool get inConstantContext;
-
- /// Return the library element which contains the unit in which the completion
- /// is occurring.
- LibraryElement get libraryElement;
-
- /// Answer the [DartType] for Object in dart:core
- DartType get objectType;
-
- /// The [OpType] which describes which types of suggestions would fit the
- /// request.
- OpType get opType;
-
- /// The source range that represents the region of text that should be
- /// replaced when a suggestion is selected.
- SourceRange get replacementRange;
-
- /// Return the [SourceFactory] of the request.
- SourceFactory get sourceFactory;
-
- /// Return the completion target. This determines what part of the parse tree
- /// will receive the newly inserted text.
- /// At a minimum, all declarations in the completion scope in [target.unit]
- /// will be resolved if they can be resolved.
- CompletionTarget get target;
-
- /// Return prefix that already exists in the document for [target] or empty
- /// string if unavailable. This can be used to filter the completion list to
- /// items that already match the text to the left of the caret.
- String get targetPrefix;
-}
diff --git a/pkg/analysis_server/lib/src/services/completion/completion_core.dart b/pkg/analysis_server/lib/src/services/completion/completion_core.dart
deleted file mode 100644
index d6fe971..0000000
--- a/pkg/analysis_server/lib/src/services/completion/completion_core.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:analysis_server/src/provisional/completion/completion_core.dart';
-import 'package:analysis_server/src/services/completion/completion_performance.dart';
-import 'package:analyzer/dart/analysis/results.dart';
-import 'package:analyzer/file_system/file_system.dart';
-import 'package:analyzer/src/generated/source.dart';
-
-/// The information about a requested list of completions.
-class CompletionRequestImpl implements CompletionRequest {
- @override
- final ResolvedUnitResult result;
-
- @override
- final int offset;
-
- /// The offset of the start of the text to be replaced.
- /// This will be different than the [offset] used to request the completion
- /// suggestions if there was a portion of an identifier before the original
- /// [offset]. In particular, the [replacementOffset] will be the offset of the
- /// beginning of said identifier.
- int replacementOffset;
-
- /// The length of the text to be replaced if the remainder of the identifier
- /// containing the cursor is to be replaced when the suggestion is applied
- /// (that is, the number of characters in the existing identifier).
- /// This will be different than the [replacementOffset] - [offset]
- /// if the [offset] is in the middle of an existing identifier.
- int replacementLength;
-
- bool _aborted = false;
-
- final CompletionPerformance performance;
-
- /// Initialize a newly created completion request based on the given
- /// arguments.
- CompletionRequestImpl(this.result, this.offset, this.performance)
- : replacementOffset = offset,
- replacementLength = 0;
-
- @override
- ResourceProvider get resourceProvider => result.session.resourceProvider;
-
- @override
- Source get source => result.unit.declaredElement!.source;
-
- @override
- String? get sourceContents => result.content;
-
- /// Abort the current completion request.
- void abort() {
- _aborted = true;
- }
-
- @override
- void checkAborted() {
- if (_aborted) {
- throw AbortCompletion();
- }
- }
-}
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart
index 44f88c6..05e4e82 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart
@@ -4,6 +4,7 @@
import 'package:analysis_server/src/provisional/completion/completion_core.dart';
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analysis_server/src/utilities/flutter.dart';
import 'package:analyzer/dart/ast/ast.dart';
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/combinator_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/combinator_contributor.dart
index 138c369..7acb058 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/combinator_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/combinator_contributor.dart
@@ -5,6 +5,7 @@
import 'package:analysis_server/src/protocol_server.dart'
hide Element, ElementKind;
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analyzer/dart/ast/ast.dart';
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
index 6b3f53c..a26115a 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
@@ -5,7 +5,6 @@
import 'package:analysis_server/src/protocol_server.dart';
import 'package:analysis_server/src/provisional/completion/completion_core.dart';
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
-import 'package:analysis_server/src/services/completion/completion_core.dart';
import 'package:analysis_server/src/services/completion/dart/arglist_contributor.dart';
import 'package:analysis_server/src/services/completion/dart/combinator_contributor.dart';
import 'package:analysis_server/src/services/completion/dart/documentation_cache.dart';
@@ -85,12 +84,11 @@
includedSuggestionRelevanceTags == null));
Future<List<CompletionSuggestion>> computeSuggestions(
- DartCompletionRequestImpl dartRequest,
+ DartCompletionRequest request,
OperationPerformanceImpl performance, {
bool enableOverrideContributor = true,
bool enableUriContributor = true,
}) async {
- final request = dartRequest.request;
request.checkAborted();
var pathContext = request.resourceProvider.pathContext;
if (!file_paths.isDart(pathContext, request.result.path)) {
@@ -98,45 +96,40 @@
}
// Don't suggest in comments.
- if (dartRequest.target.isCommentText) {
+ if (request.target.isCommentText) {
return const <CompletionSuggestion>[];
}
request.checkAborted();
- var replacementRange = dartRequest.replacementRange;
- (request as CompletionRequestImpl)
- ..replacementOffset = replacementRange.offset
- ..replacementLength = replacementRange.length;
-
// Request Dart specific completions from each contributor
- var builder = SuggestionBuilder(dartRequest, listener: listener);
+ var builder = SuggestionBuilder(request, listener: listener);
var contributors = <DartCompletionContributor>[
- ArgListContributor(dartRequest, builder),
- CombinatorContributor(dartRequest, builder),
- ExtensionMemberContributor(dartRequest, builder),
- FieldFormalContributor(dartRequest, builder),
- KeywordContributor(dartRequest, builder),
- LabelContributor(dartRequest, builder),
- LibraryMemberContributor(dartRequest, builder),
- LibraryPrefixContributor(dartRequest, builder),
- LocalLibraryContributor(dartRequest, builder),
- LocalReferenceContributor(dartRequest, builder),
- NamedConstructorContributor(dartRequest, builder),
- if (enableOverrideContributor) OverrideContributor(dartRequest, builder),
- RedirectingContributor(dartRequest, builder),
- StaticMemberContributor(dartRequest, builder),
- TypeMemberContributor(dartRequest, builder),
- if (enableUriContributor) UriContributor(dartRequest, builder),
- VariableNameContributor(dartRequest, builder),
+ ArgListContributor(request, builder),
+ CombinatorContributor(request, builder),
+ ExtensionMemberContributor(request, builder),
+ FieldFormalContributor(request, builder),
+ KeywordContributor(request, builder),
+ LabelContributor(request, builder),
+ LibraryMemberContributor(request, builder),
+ LibraryPrefixContributor(request, builder),
+ LocalLibraryContributor(request, builder),
+ LocalReferenceContributor(request, builder),
+ NamedConstructorContributor(request, builder),
+ if (enableOverrideContributor) OverrideContributor(request, builder),
+ RedirectingContributor(request, builder),
+ StaticMemberContributor(request, builder),
+ TypeMemberContributor(request, builder),
+ if (enableUriContributor) UriContributor(request, builder),
+ VariableNameContributor(request, builder),
];
if (includedElementKinds != null) {
- _addIncludedElementKinds(dartRequest);
- _addIncludedSuggestionRelevanceTags(dartRequest);
+ _addIncludedElementKinds(request);
+ _addIncludedSuggestionRelevanceTags(request);
} else {
contributors.add(
- ImportedReferenceContributor(dartRequest, builder),
+ ImportedReferenceContributor(request, builder),
);
}
@@ -159,7 +152,7 @@
return builder.suggestions.toList();
}
- void _addIncludedElementKinds(DartCompletionRequestImpl request) {
+ void _addIncludedElementKinds(DartCompletionRequest request) {
var opType = request.opType;
if (!opType.includeIdentifiers) return;
@@ -192,7 +185,7 @@
}
}
- void _addIncludedSuggestionRelevanceTags(DartCompletionRequestImpl request) {
+ void _addIncludedSuggestionRelevanceTags(DartCompletionRequest request) {
final includedSuggestionRelevanceTags =
this.includedSuggestionRelevanceTags!;
var location = request.opType.completionLocation;
@@ -243,45 +236,54 @@
}
/// The information about a requested list of completions within a Dart file.
-class DartCompletionRequestImpl implements DartCompletionRequest {
- @override
+class DartCompletionRequest {
final CompletionPreference completionPreference;
- @override
+ /// Return the type imposed on the target's `containingNode` based on its
+ /// context, or `null` if the context does not impose any type.
final DartType? contextType;
- @override
+ /// Return the object used to resolve macros in Dartdoc comments.
final DartdocDirectiveInfo dartdocDirectiveInfo;
final DocumentationCache? documentationCache;
- @override
+ /// Return the expression to the right of the "dot" or "dot dot",
+ /// or `null` if this is not a "dot" completion (e.g. `foo.b`).
final Expression? dotTarget;
- @override
+ /// Return the object used to compute the values of the features used to
+ /// compute relevance scores for suggestions.
final FeatureComputer featureComputer;
- @override
+ /// Return the offset within the source at which the completion is being
+ /// requested.
final int offset;
- @override
+ /// The [OpType] which describes which types of suggestions would fit the
+ /// request.
final OpType opType;
- @override
+ /// The source range that represents the region of text that should be
+ /// replaced when a suggestion is selected.
final SourceRange replacementRange;
- final CompletionRequest request;
-
- @override
+ /// The analysis result for the file in which the completion is being
+ /// requested.
final ResolvedUnitResult result;
- @override
+ /// Return the source in which the completion is being requested.
final Source source;
- @override
+ /// Return the completion target. This determines what part of the parse tree
+ /// will receive the newly inserted text.
+ /// At a minimum, all declarations in the completion scope in [target.unit]
+ /// will be resolved if they can be resolved.
final CompletionTarget target;
- DartCompletionRequestImpl._({
+ bool _aborted = false;
+
+ DartCompletionRequest._({
required this.completionPreference,
required this.contextType,
required this.dartdocDirectiveInfo,
@@ -291,45 +293,65 @@
required this.offset,
required this.opType,
required this.replacementRange,
- required this.request,
required this.result,
required this.source,
required this.target,
});
- @override
+ /// Return the feature set that was used to analyze the compilation unit in
+ /// which suggestions are being made.
FeatureSet get featureSet => libraryElement.featureSet;
- @override
+ /// Return `true` if free standing identifiers should be suggested
bool get includeIdentifiers {
return opType.includeIdentifiers;
}
- @override
+ /// Return `true` if the completion is occurring in a constant context.
bool get inConstantContext {
var entity = target.entity;
return entity is Expression && entity.inConstantContext;
}
- @override
+ /// Return the library element which contains the unit in which the completion
+ /// is occurring.
LibraryElement get libraryElement => result.libraryElement;
- @override
+ /// Answer the [DartType] for Object in dart:core
DartType get objectType => libraryElement.typeProvider.objectType;
- @override
+ /// The length of the text to be replaced if the remainder of the identifier
+ /// containing the cursor is to be replaced when the suggestion is applied
+ /// (that is, the number of characters in the existing identifier).
+ /// This will be different than the [replacementOffset] - [offset]
+ /// if the [offset] is in the middle of an existing identifier.
+ /// TODO(scheglov) Switch to [replacementRange].
+ int get replacementLength => replacementRange.length;
+
+ /// The offset of the start of the text to be replaced.
+ /// This will be different than the [offset] used to request the completion
+ /// suggestions if there was a portion of an identifier before the original
+ /// [offset]. In particular, the [replacementOffset] will be the offset of the
+ /// beginning of said identifier.
+ /// TODO(scheglov) Switch to [replacementRange].
+ int get replacementOffset => replacementRange.offset;
+
+ /// Return the resource provider associated with this request.
ResourceProvider get resourceProvider => result.session.resourceProvider;
- @override
+ /// Return the content of the [source] in which the completion is being
+ /// requested, or `null` if the content could not be accessed.
String? get sourceContents => result.content;
- @override
+ /// Return the [SourceFactory] of the request.
SourceFactory get sourceFactory {
var context = result.session.analysisContext as DriverBasedAnalysisContext;
return context.driver.sourceFactory;
}
- @override
+ /// Return prefix that already exists in the document for [target] or empty
+ /// string if unavailable. This can be used to filter the completion list to
+ /// items that already match the text to the left of the caret.
String get targetPrefix {
var entity = target.entity;
@@ -355,32 +377,32 @@
return '';
}
- /// Throw [AbortCompletion] if the completion request has been aborted.
- @override
- void checkAborted() {
- request.checkAborted();
+ /// Abort the current completion request.
+ void abort() {
+ _aborted = true;
}
- /// Return a newly created completion request based on the given [request].
- /// This method will throw [AbortCompletion] if the completion request has
- /// been aborted.
- static DartCompletionRequestImpl from(
- CompletionRequest request, {
+ /// Throw [AbortCompletion] if the completion request has been aborted.
+ void checkAborted() {
+ if (_aborted) {
+ throw AbortCompletion();
+ }
+ }
+
+ /// Return a newly created completion request in [resolvedUnit] at [offset].
+ static DartCompletionRequest from({
+ required ResolvedUnitResult resolvedUnit,
+ required int offset,
DartdocDirectiveInfo? dartdocDirectiveInfo,
CompletionPreference completionPreference = CompletionPreference.insert,
DocumentationCache? documentationCache,
}) {
- request.checkAborted();
-
- var result = request.result;
- var offset = request.offset;
-
- var target = CompletionTarget.forOffset(result.unit, offset);
+ var target = CompletionTarget.forOffset(resolvedUnit.unit, offset);
var dotTarget = _dotTarget(target);
var featureComputer = FeatureComputer(
- result.typeSystem,
- result.typeProvider,
+ resolvedUnit.typeSystem,
+ resolvedUnit.typeProvider,
);
var contextType = featureComputer.computeContextType(
@@ -393,7 +415,7 @@
opType.includeVoidReturnSuggestions = true;
}
- return DartCompletionRequestImpl._(
+ return DartCompletionRequest._(
completionPreference: completionPreference,
contextType: contextType,
dartdocDirectiveInfo: dartdocDirectiveInfo ?? DartdocDirectiveInfo(),
@@ -403,9 +425,8 @@
offset: offset,
opType: opType,
replacementRange: target.computeReplacementRange(offset),
- request: request,
- result: request.result,
- source: request.source,
+ result: resolvedUnit,
+ source: resolvedUnit.unit.declaredElement!.source,
target: target,
);
}
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/extension_member_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/extension_member_contributor.dart
index 58e3b83..9b6634c 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/extension_member_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/extension_member_contributor.dart
@@ -5,6 +5,7 @@
import 'package:analysis_server/src/protocol_server.dart'
show CompletionSuggestionKind;
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analysis_server/src/utilities/extensions/element.dart';
import 'package:analyzer/dart/ast/ast.dart';
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/field_formal_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/field_formal_contributor.dart
index d073956..daa7ef1 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/field_formal_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/field_formal_contributor.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element.dart';
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/imported_reference_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/imported_reference_contributor.dart
index eb2bd03..3277593 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/imported_reference_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/imported_reference_contributor.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/local_library_contributor.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart'
show SuggestionBuilder;
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart
index a32f625..864f1f9 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart
@@ -56,10 +56,8 @@
@override
void visitArgumentList(ArgumentList node) {
- if (request is DartCompletionRequestImpl) {
- if (request.opType.includeOnlyNamedArgumentSuggestions) {
- return;
- }
+ if (request.opType.includeOnlyNamedArgumentSuggestions) {
+ return;
}
final entity = this.entity;
if (entity == node.rightParenthesis) {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/label_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/label_contributor.dart
index c3d8f57..9933db4 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/label_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/label_contributor.dart
@@ -4,7 +4,7 @@
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart'
- show DartCompletionRequestImpl;
+ show DartCompletionRequest;
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer_plugin/src/utilities/visitors/local_declaration_visitor.dart'
@@ -21,7 +21,7 @@
@override
Future<void> computeSuggestions() async {
- var optype = (request as DartCompletionRequestImpl).opType;
+ var optype = request.opType;
// Collect suggestions from the specific child [AstNode] that contains
// the completion offset and all of its parents recursively.
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/library_member_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/library_member_contributor.dart
index 0b49e0f..5654e30 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/library_member_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/library_member_contributor.dart
@@ -5,6 +5,7 @@
import 'package:analysis_server/src/protocol_server.dart'
show CompletionSuggestionKind;
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element.dart';
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/library_prefix_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/library_prefix_contributor.dart
index 5fad45d..09900cf 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/library_prefix_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/library_prefix_contributor.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
/// A contributor that produces suggestions based on the prefixes defined on
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart
index e0b113d..734a36e 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart
@@ -5,6 +5,7 @@
import 'package:analysis_server/src/protocol_server.dart'
show CompletionSuggestionKind;
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart'
show SuggestionBuilder;
import 'package:analyzer/dart/element/element.dart';
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
index dd5d733..ca8280c 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart
@@ -5,6 +5,7 @@
import 'package:analysis_server/src/protocol_server.dart'
show CompletionSuggestionKind;
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element.dart';
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/named_constructor_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/named_constructor_contributor.dart
index 41fa61c..51853fe 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/named_constructor_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/named_constructor_contributor.dart
@@ -4,6 +4,7 @@
import 'package:analysis_server/src/protocol_server.dart' as protocol;
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analysis_server/src/utilities/extensions/completion_request.dart';
import 'package:analyzer/dart/ast/ast.dart';
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/override_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/override_contributor.dart
index 0e62f8e..72174fe 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/override_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/override_contributor.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/redirecting_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/redirecting_contributor.dart
index 4fd743a..faea364 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/redirecting_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/redirecting_contributor.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analyzer/dart/ast/ast.dart';
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/static_member_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/static_member_contributor.dart
index 9aa546b..ec104fa 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/static_member_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/static_member_contributor.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analysis_server/src/utilities/extensions/completion_request.dart';
import 'package:analyzer/dart/ast/ast.dart';
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
index fd83310..8783ddd 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
@@ -1177,15 +1177,12 @@
/// If the [element] has a documentation comment, fill the [suggestion]'s
/// documentation fields.
void _setDocumentation(CompletionSuggestion suggestion, Element element) {
- final request = this.request;
- if (request is DartCompletionRequestImpl) {
- var documentationCache = request.documentationCache;
- var data = documentationCache?.dataFor(element);
- if (data != null) {
- suggestion.docComplete = data.full;
- suggestion.docSummary = data.summary;
- return;
- }
+ var documentationCache = request.documentationCache;
+ var data = documentationCache?.dataFor(element);
+ if (data != null) {
+ suggestion.docComplete = data.full;
+ suggestion.docSummary = data.summary;
+ return;
}
var doc = DartUnitHoverComputer.computeDocumentation(
request.dartdocDirectiveInfo, element,
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/type_member_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/type_member_contributor.dart
index f15812e..66b7f47 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/type_member_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/type_member_contributor.dart
@@ -5,6 +5,7 @@
import 'dart:collection';
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element.dart';
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/uri_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/uri_contributor.dart
index cbb8337..703acf8 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/uri_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/uri_contributor.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/visitor.dart';
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart b/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart
index 4a4c7d5..19d86b0 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart
@@ -5,7 +5,7 @@
/// A collection of utility methods used by completion contributors.
import 'package:analysis_server/src/protocol_server.dart'
show CompletionSuggestion, Location;
-import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/standard_ast_factory.dart';
import 'package:analyzer/dart/ast/token.dart';
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart
index 97b2249..1de638f 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analysis_server/src/services/correction/name_suggestion.dart';
import 'package:analyzer/dart/ast/ast.dart';
diff --git a/pkg/analysis_server/lib/src/utilities/extensions/completion_request.dart b/pkg/analysis_server/lib/src/utilities/extensions/completion_request.dart
index f0af690..85066d4 100644
--- a/pkg/analysis_server/lib/src/utilities/extensions/completion_request.dart
+++ b/pkg/analysis_server/lib/src/utilities/extensions/completion_request.dart
@@ -2,7 +2,7 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/nullability_suffix.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
index 8dfaa60..690b251 100644
--- a/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
@@ -4,6 +4,7 @@
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
import 'package:analysis_server/src/services/completion/dart/arglist_contributor.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analyzer/src/dart/analysis/experiments.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/combinator_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/combinator_contributor_test.dart
index e41e5a2..3099fcf 100644
--- a/pkg/analysis_server/test/services/completion/dart/combinator_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/combinator_contributor_test.dart
@@ -4,6 +4,7 @@
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
import 'package:analysis_server/src/services/completion/dart/combinator_contributor.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart b/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart
index 6bfb885..b1d9045 100644
--- a/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart
+++ b/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart
@@ -5,10 +5,9 @@
import 'dart:async';
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
-import 'package:analysis_server/src/services/completion/completion_core.dart';
import 'package:analysis_server/src/services/completion/completion_performance.dart';
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart'
- show DartCompletionRequestImpl;
+ show DartCompletionRequest;
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analysis_server/src/services/completion/dart/utilities.dart';
import 'package:analyzer/dart/analysis/results.dart';
@@ -531,14 +530,12 @@
Future computeSuggestions({int times = 200}) async {
result = await session.getResolvedUnit(testFile) as ResolvedUnitResult;
- var baseRequest = CompletionRequestImpl(
- result, completionOffset, CompletionPerformance());
-
- return await baseRequest.performance.runRequestOperation(
+ return await CompletionPerformance().runRequestOperation(
(performance) async {
// Build the request
- var request = DartCompletionRequestImpl.from(
- baseRequest,
+ var request = DartCompletionRequest.from(
+ resolvedUnit: result,
+ offset: completionOffset,
dartdocDirectiveInfo: dartdocInfo,
);
diff --git a/pkg/analysis_server/test/services/completion/dart/completion_manager_test.dart b/pkg/analysis_server/test/services/completion/dart/completion_manager_test.dart
index 3924da2..882d459 100644
--- a/pkg/analysis_server/test/services/completion/dart/completion_manager_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/completion_manager_test.dart
@@ -5,8 +5,6 @@
import 'dart:async';
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
-import 'package:analysis_server/src/services/completion/completion_core.dart';
-import 'package:analysis_server/src/services/completion/completion_performance.dart';
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/imported_reference_contributor.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
@@ -52,13 +50,12 @@
await resolveFile('$testPackageLibPath/b.dart');
// Build the request
- var baseRequest = CompletionRequestImpl(
- await session.getResolvedUnit(testFile) as ResolvedUnitResult,
- completionOffset,
- CompletionPerformance());
- await baseRequest.performance.runRequestOperation((performance) async {
- request = DartCompletionRequestImpl.from(baseRequest);
- });
+ var resolvedUnit =
+ await session.getResolvedUnit(testFile) as ResolvedUnitResult;
+ request = DartCompletionRequest.from(
+ resolvedUnit: resolvedUnit,
+ offset: completionOffset,
+ );
var directives = request.target.unit.directives;
diff --git a/pkg/analysis_server/test/services/completion/dart/extension_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/extension_member_contributor_test.dart
index 4e72a0e..d8f81bb 100644
--- a/pkg/analysis_server/test/services/completion/dart/extension_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/extension_member_contributor_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/extension_member_contributor.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart
index f38df45..ff209f1 100644
--- a/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/field_formal_contributor.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:test/test.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart
index b1cfe12..6f277c3 100644
--- a/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart
@@ -4,6 +4,7 @@
import 'package:analysis_server/src/protocol_server.dart';
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/imported_reference_contributor.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analyzer/src/dart/analysis/experiments.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
index 1d96cae..585012d 100644
--- a/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/keyword_contributor.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analyzer/dart/analysis/features.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/label_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/label_contributor_test.dart
index ad09ba3..2d6d5f5 100644
--- a/pkg/analysis_server/test/services/completion/dart/label_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/label_contributor_test.dart
@@ -4,6 +4,7 @@
import 'package:analysis_server/src/protocol_server.dart';
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/label_contributor.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:test/test.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart
index d4a3f76..5c1db88 100644
--- a/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/library_member_contributor.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:test/test.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/library_prefix_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/library_prefix_contributor_test.dart
index 96ecfce..aa2e6a2 100644
--- a/pkg/analysis_server/test/services/completion/dart/library_prefix_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/library_prefix_contributor_test.dart
@@ -4,6 +4,7 @@
import 'package:analysis_server/src/protocol_server.dart';
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/library_prefix_contributor.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:test/test.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart
index d5cfe06..3a6fa56 100644
--- a/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/local_library_contributor.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:test/test.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
index 25888ec..6e7253d 100644
--- a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
@@ -4,6 +4,7 @@
import 'package:analysis_server/src/protocol_server.dart';
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/local_reference_contributor.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:test/test.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart
index 87db577..a671eeb 100644
--- a/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/named_constructor_contributor.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/override_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/override_contributor_test.dart
index 3178bc4..e8eff71 100644
--- a/pkg/analysis_server/test/services/completion/dart/override_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/override_contributor_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/override_contributor.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/static_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/static_member_contributor_test.dart
index 919e175..e4bc0d3 100644
--- a/pkg/analysis_server/test/services/completion/dart/static_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/static_member_contributor_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/static_member_contributor.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:test/test.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
index 8633ece..c7f9a18 100644
--- a/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analysis_server/src/services/completion/dart/type_member_contributor.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/uri_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/uri_contributor_test.dart
index f2e442c..92e87d3 100644
--- a/pkg/analysis_server/test/services/completion/dart/uri_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/uri_contributor_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analysis_server/src/services/completion/dart/uri_contributor.dart';
import 'package:analyzer/file_system/memory_file_system.dart';
diff --git a/pkg/analysis_server/test/services/completion/dart/variable_name_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/variable_name_contributor_test.dart
index 97bac2b..63f698f 100644
--- a/pkg/analysis_server/test/services/completion/dart/variable_name_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/variable_name_contributor_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:analysis_server/src/services/completion/dart/variable_name_contributor.dart';
import 'package:test/test.dart';
diff --git a/pkg/analysis_server/test/src/services/completion/dart/suggestion_builder_test.dart b/pkg/analysis_server/test/src/services/completion/dart/suggestion_builder_test.dart
index 64130c8..009797d 100644
--- a/pkg/analysis_server/test/src/services/completion/dart/suggestion_builder_test.dart
+++ b/pkg/analysis_server/test/src/services/completion/dart/suggestion_builder_test.dart
@@ -3,8 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/protocol_server.dart';
-import 'package:analysis_server/src/services/completion/completion_core.dart';
-import 'package:analysis_server/src/services/completion/completion_performance.dart';
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
import 'package:test/test.dart';
@@ -29,8 +27,9 @@
}
Future<CompletionSuggestion> forTopLevelFunction(String functionName) async {
- var request = DartCompletionRequestImpl.from(
- CompletionRequestImpl(testAnalysisResult, 0, CompletionPerformance()),
+ var request = DartCompletionRequest.from(
+ resolvedUnit: testAnalysisResult,
+ offset: 0,
);
var builder = SuggestionBuilder(request);
builder.suggestTopLevelFunction(findElement.topFunction('f'));
diff --git a/pkg/analysis_server/test/stress/completion/completion_runner.dart b/pkg/analysis_server/test/stress/completion/completion_runner.dart
index 921a82f..25770fe 100644
--- a/pkg/analysis_server/test/stress/completion/completion_runner.dart
+++ b/pkg/analysis_server/test/stress/completion/completion_runner.dart
@@ -2,7 +2,6 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-import 'package:analysis_server/src/services/completion/completion_core.dart';
import 'package:analysis_server/src/services/completion/completion_performance.dart';
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/utilities/null_string_sink.dart';
@@ -99,9 +98,11 @@
}
timer.start();
- var request = CompletionRequestImpl(result, offset, statistics);
- var dartRequest = DartCompletionRequestImpl.from(request);
- var suggestions = await request.performance.runRequestOperation(
+ var dartRequest = DartCompletionRequest.from(
+ resolvedUnit: result,
+ offset: offset,
+ );
+ var suggestions = await statistics.runRequestOperation(
(performance) async {
return await contributor.computeSuggestions(
dartRequest,
diff --git a/pkg/analysis_server/tool/code_completion/completion_metrics.dart b/pkg/analysis_server/tool/code_completion/completion_metrics.dart
index 4746652..fe1e019 100644
--- a/pkg/analysis_server/tool/code_completion/completion_metrics.dart
+++ b/pkg/analysis_server/tool/code_completion/completion_metrics.dart
@@ -10,7 +10,6 @@
import 'package:analysis_server/src/domains/completion/available_suggestions.dart';
import 'package:analysis_server/src/protocol/protocol_internal.dart';
import 'package:analysis_server/src/protocol_server.dart' as protocol;
-import 'package:analysis_server/src/services/completion/completion_core.dart';
import 'package:analysis_server/src/services/completion/completion_performance.dart';
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
import 'package:analysis_server/src/services/completion/dart/documentation_cache.dart';
@@ -718,7 +717,7 @@
}
int forEachExpectedCompletion(
- CompletionRequestImpl request,
+ DartCompletionRequest request,
MetricsSuggestionListener listener,
ExpectedCompletion expectedCompletion,
String? completionLocation,
@@ -1200,20 +1199,12 @@
Future<List<protocol.CompletionSuggestion>> _computeCompletionSuggestions(
MetricsSuggestionListener listener,
OperationPerformanceImpl performance,
- CompletionRequestImpl request,
- DartdocDirectiveInfo dartdocDirectiveInfo,
- DocumentationCache? documentationCache,
+ DartCompletionRequest dartRequest,
[DeclarationsTracker? declarationsTracker,
protocol.CompletionAvailableSuggestionsParams?
availableSuggestionsParams]) async {
List<protocol.CompletionSuggestion> suggestions;
- var dartRequest = DartCompletionRequestImpl.from(
- request,
- dartdocDirectiveInfo: dartdocDirectiveInfo,
- documentationCache: documentationCache,
- );
-
if (declarationsTracker == null) {
// available suggestions == false
suggestions = await DartCompletionManager(
@@ -1233,7 +1224,7 @@
listener: listener,
).computeSuggestions(dartRequest, performance);
- computeIncludedSetList(declarationsTracker, request.result,
+ computeIncludedSetList(declarationsTracker, dartRequest.result,
includedSuggestionSetList, includedElementNames);
var includedSuggestionSetMap = {
@@ -1375,27 +1366,21 @@
{required MetricsSuggestionListener listener,
required CompletionMetrics metrics}) async {
var stopwatch = Stopwatch()..start();
- var request = CompletionRequestImpl(
- resolvedUnitResult,
- expectedCompletion.offset,
- CompletionPerformance(),
+ var request = DartCompletionRequest.from(
+ resolvedUnit: resolvedUnitResult,
+ offset: expectedCompletion.offset,
+ documentationCache: documentationCache,
);
late OpType opType;
late List<protocol.CompletionSuggestion> suggestions;
- await request.performance.runRequestOperation(
+ await CompletionPerformance().runRequestOperation(
(performance) async {
- var dartRequest = DartCompletionRequestImpl.from(
- request,
- documentationCache: documentationCache,
- );
- opType = OpType.forCompletion(dartRequest.target, request.offset);
+ opType = OpType.forCompletion(request.target, request.offset);
suggestions = await _computeCompletionSuggestions(
listener,
performance,
request,
- dartdocDirectiveInfo,
- documentationCache,
metrics.availableSuggestions ? declarationsTracker : null,
metrics.availableSuggestions
? availableSuggestionsParams
@@ -1719,7 +1704,7 @@
class CompletionResult {
final Place place;
- final CompletionRequestImpl? request;
+ final DartCompletionRequest? request;
final SuggestionData actualSuggestion;
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index f0dc96e..d672ae5 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -1,6 +1,7 @@
## 2.8.0-dev
* Deprecations and renames for `getXyz` methods in `AnalysisDriver`.
* Removed uppercase named constants from `double` in mock SDK.
+* Deprecated `path` and `uri` from `AnalysisResult`.
## 2.7.0
* Updated `ConstructorElement.displayName` to either `Class` or `Class.constructor`.
diff --git a/pkg/analyzer/lib/dart/analysis/results.dart b/pkg/analyzer/lib/dart/analysis/results.dart
index 6bf41b7..a6f1df5 100644
--- a/pkg/analyzer/lib/dart/analysis/results.dart
+++ b/pkg/analyzer/lib/dart/analysis/results.dart
@@ -16,6 +16,7 @@
/// Clients may not extend, implement or mix-in this class.
abstract class AnalysisResult {
/// The absolute and normalized path of the file that was analyzed.
+ @Deprecated('Use FileResult.path instead')
String get path;
/// Return the session used to compute this result.
@@ -26,6 +27,7 @@
ResultState get state;
/// The absolute URI of the file that was analyzed.
+ @Deprecated('Use FileResult.uri instead')
Uri get uri;
}
@@ -83,6 +85,14 @@
/// Information about lines in the content.
LineInfo get lineInfo;
+
+ /// The absolute and normalized path of the file that was analyzed.
+ @override
+ String get path;
+
+ /// The absolute URI of the file that was analyzed.
+ @override
+ Uri get uri;
}
/// The type of [InvalidResult] returned when the given file path is invalid,
diff --git a/pkg/analyzer/lib/src/dart/analysis/results.dart b/pkg/analyzer/lib/src/dart/analysis/results.dart
index 5f03c26..4856a55 100644
--- a/pkg/analyzer/lib/src/dart/analysis/results.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/results.dart
@@ -16,9 +16,11 @@
@override
final AnalysisSession session;
+ @Deprecated('Use FileResult.path instead')
@override
final String path;
+ @Deprecated('Use FileResult.uri instead')
@override
final Uri uri;
@@ -62,9 +64,19 @@
AnalysisSession session, String path, Uri uri, this.lineInfo, this.isPart)
: super(session, path, uri);
+ @override
+ // TODO(scheglov) Convert into a field.
+ // ignore: deprecated_member_use_from_same_package, unnecessary_overrides
+ String get path => super.path;
+
@Deprecated('Check for specific Result subtypes instead')
@override
ResultState get state => ResultState.VALID;
+
+ @override
+ // TODO(scheglov) Convert into a field.
+ // ignore: deprecated_member_use_from_same_package, unnecessary_overrides
+ Uri get uri => super.uri;
}
class LibraryElementResultImpl implements LibraryElementResult {
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index 8ab312a..de37c97 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -1570,7 +1570,6 @@
var uri = Uri.parse('package:test/test.dart');
var result = driver.getParsedLibraryByUri(uri);
result as ParsedLibraryResult;
- expect(result.uri, uri);
expect(result.units, hasLength(1));
expect(result.units[0].uri, uri);
expect(result.units[0].path, testFile);
@@ -1621,7 +1620,6 @@
var uri = Uri.parse('package:test/test.dart');
var result = await driver.getResolvedLibraryByUri(uri);
result as ResolvedLibraryResult;
- expect(result.uri, uri);
expect(result.element.source.fullName, testFile);
expect(result.units, hasLength(1));
expect(result.units[0].uri, uri);
diff --git a/pkg/analyzer/test/src/dart/analysis/session_test.dart b/pkg/analyzer/test/src/dart/analysis/session_test.dart
index d9f6f0f..9512475 100644
--- a/pkg/analyzer/test/src/dart/analysis/session_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/session_test.dart
@@ -228,8 +228,6 @@
var parsedLibrary = session.getParsedLibraryValid(testPath);
expect(parsedLibrary.session, session);
- expect(parsedLibrary.path, testPath);
- expect(parsedLibrary.uri, Uri.parse('package:test/test.dart'));
expect(parsedLibrary.units, hasLength(1));
{
@@ -365,8 +363,6 @@
newFile(c, content: cContent);
var parsedLibrary = session.getParsedLibraryValid(a);
- expect(parsedLibrary.path, a);
- expect(parsedLibrary.uri, Uri.parse('package:test/a.dart'));
expect(parsedLibrary.units, hasLength(3));
{
@@ -401,9 +397,14 @@
var parsedLibrary = session.getParsedLibraryByElementValid(element);
expect(parsedLibrary.session, session);
- expect(parsedLibrary.path, testPath);
- expect(parsedLibrary.uri, Uri.parse('package:test/test.dart'));
expect(parsedLibrary.units, hasLength(1));
+
+ {
+ var unit = parsedLibrary.units[0];
+ expect(unit.path, testPath);
+ expect(unit.uri, Uri.parse('package:test/test.dart'));
+ expect(unit.unit, isNotNull);
+ }
}
test_getParsedLibraryByElement_differentSession() async {
@@ -460,8 +461,6 @@
var resolvedLibrary = await session.getResolvedLibraryValid(a);
expect(resolvedLibrary.session, session);
- expect(resolvedLibrary.path, a);
- expect(resolvedLibrary.uri, Uri.parse('package:test/a.dart'));
var typeProvider = resolvedLibrary.typeProvider;
expect(typeProvider.intType.element.name, 'int');
@@ -586,9 +585,9 @@
var result = await session.getResolvedLibraryByElementValid(element);
expect(result.session, session);
- expect(result.path, testPath);
- expect(result.uri, Uri.parse('package:test/test.dart'));
expect(result.units, hasLength(1));
+ expect(result.units[0].path, testPath);
+ expect(result.units[0].uri, Uri.parse('package:test/test.dart'));
expect(result.units[0].unit.declaredElement, isNotNull);
}
diff --git a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
index 52f968e..83bc4af 100644
--- a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
+++ b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
@@ -1166,8 +1166,9 @@
''');
var result = fileResolver.resolveLibrary(path: aPath);
- expect(result.path, aPath);
expect(result.units.length, 2);
+ expect(result.units[0].path, aPath);
+ expect(result.units[0].uri, Uri.parse('package:dart.test/a.dart'));
}
test_reuse_compatibleOptions() async {
diff --git a/pkg/dev_compiler/lib/src/kernel/compiler.dart b/pkg/dev_compiler/lib/src/kernel/compiler.dart
index 9dc9bd9..6e68327 100644
--- a/pkg/dev_compiler/lib/src/kernel/compiler.dart
+++ b/pkg/dev_compiler/lib/src/kernel/compiler.dart
@@ -1395,16 +1395,26 @@
void emitSignature(String name, List<js_ast.Property> elements) {
if (elements.isEmpty) return;
+ js_ast.Statement setSignature;
if (!name.startsWith('Static')) {
var proto = c == _coreTypes.objectClass
? js.call('Object.create(null)')
: runtimeCall('get${name}s(#.__proto__)', [className]);
elements.insert(0, js_ast.Property(propertyName('__proto__'), proto));
+ setSignature = runtimeStatement('set${name}Signature(#, () => #)', [
+ className,
+ js_ast.ObjectInitializer(elements, multiline: elements.length > 1)
+ ]);
+ } else {
+ // TODO(40273) Only tagging with the names of static members until the
+ // debugger consumes signature information from symbol files.
+ setSignature = runtimeStatement('set${name}Signature(#, () => #)', [
+ className,
+ js_ast.ArrayInitializer(elements.map((e) => e.name).toList())
+ ]);
}
- body.add(runtimeStatement('set${name}Signature(#, () => #)', [
- className,
- js_ast.ObjectInitializer(elements, multiline: elements.length > 1)
- ]));
+
+ body.add(setSignature);
}
var extMethods = _classProperties.extensionMethods;
@@ -1416,6 +1426,8 @@
var staticSetters = <js_ast.Property>[];
var instanceSetters = <js_ast.Property>[];
List<js_ast.Property> getSignatureList(Procedure p) {
+ // TODO(40273) Skip for all statics when the debugger consumes signature
+ // information from symbol files.
if (p.isStatic) {
if (p.isGetter) {
return staticGetters;
@@ -1437,9 +1449,14 @@
var classProcedures = c.procedures.where((p) => !p.isAbstract).toList();
for (var member in classProcedures) {
- // Static getters/setters/methods cannot be called with dynamic dispatch,
- // nor can they be torn off.
- if (member.isStatic) continue;
+ // Static getters/setters cannot be called with dynamic dispatch or torn
+ // off. Static methods can't be called with dynamic dispatch and are
+ // tagged with a type when torn off. Most are implicitly const and
+ // canonicalized. Static signatures are only used by the debugger and are
+ // not needed for runtime correctness.
+ // TODO(40273) Skip for all statics when the debugger consumes signature
+ // information from symbol files.
+ if (isTearOffLowering(member)) continue;
var name = member.name.text;
var reifiedType = _memberRuntimeType(member, c) as FunctionType;
@@ -1478,6 +1495,8 @@
}
emitSignature('Method', instanceMethods);
+ // TODO(40273) Skip for all statics when the debugger consumes signature
+ // information from symbol files.
emitSignature('StaticMethod', staticMethods);
emitSignature('Getter', instanceGetters);
emitSignature('Setter', instanceSetters);
@@ -1491,16 +1510,19 @@
var classFields = c.fields.toList();
for (var field in classFields) {
- // Only instance fields need to be saved for dynamic dispatch.
- var isStatic = field.isStatic;
- if (isStatic) continue;
-
+ // Static fields cannot be called with dynamic dispatch or torn off. The
+ // signatures are only used by the debugger and are not needed for runtime
+ // correctness.
var memberName = _declareMemberName(field);
var fieldSig = _emitFieldSignature(field, c);
- (isStatic ? staticFields : instanceFields)
+ // TODO(40273) Skip static fields when the debugger consumes signature
+ // information from symbol files.
+ (field.isStatic ? staticFields : instanceFields)
.add(js_ast.Property(memberName, fieldSig));
}
emitSignature('Field', instanceFields);
+ // TODO(40273) Skip for all statics when the debugger consumes signature
+ // information from symbol files.
emitSignature('StaticField', staticFields);
// Add static property dart._runtimeType to Object.
@@ -2525,6 +2547,9 @@
var exportName = _jsExportName(member);
if (exportName != null) return propertyName(exportName);
}
+ if (member is Procedure && member.isFactory) {
+ return _constructorName(member.name.text);
+ }
switch (name) {
// Reserved for the compiler to do `x as T`.
case 'as':
diff --git a/sdk/lib/_internal/js_dev_runtime/private/debugger.dart b/sdk/lib/_internal/js_dev_runtime/private/debugger.dart
index 1f9e933..467e012 100644
--- a/sdk/lib/_internal/js_dev_runtime/private/debugger.dart
+++ b/sdk/lib/_internal/js_dev_runtime/private/debugger.dart
@@ -924,23 +924,9 @@
// implemented interfaces, and methods.
var ret = LinkedHashSet<NameValuePair>();
- var staticProperties = Set<NameValuePair>();
- var staticMethods = Set<NameValuePair>();
- // Static fields and properties.
- addPropertiesFromSignature(
- dart.getStaticFields(type), staticProperties, type, false);
- addPropertiesFromSignature(
- dart.getStaticGetters(type), staticProperties, type, false);
- // static methods.
- addPropertiesFromSignature(
- dart.getStaticMethods(type), staticMethods, type, false);
-
- if (staticProperties.isNotEmpty || staticMethods.isNotEmpty) {
- ret
- ..add(NameValuePair(value: '[[Static members]]', hideName: true))
- ..addAll(sortProperties(staticProperties))
- ..addAll(sortProperties(staticMethods));
- }
+ // Static fields, getters, setters, and methods signatures were removed
+ // from the runtime representation because they are not needed. At this
+ // time there is no intention to support them in this custom formatter.
// instance methods.
var instanceMethods = Set<NameValuePair>();
diff --git a/tools/VERSION b/tools/VERSION
index bd85cf6..b11192f 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 15
PATCH 0
-PRERELEASE 251
+PRERELEASE 252
PRERELEASE_PATCH 0
\ No newline at end of file