Skip to content

Commit 76dadee

Browse files
committed
Remove DartCompletionRequest, use what was Impl instead.
I think we don't expect that users will write plugins that use these types. So, we can remove the indirection. Similarly, CompletionRequest is also currently de-facto a Dart completion request, because it has `ResolvedUnitResult result`. I will fold it into DartCompletionRequest in a future CL. Change-Id: I2ea1d443ae18535f8c72f785dd1b91cf8d30ffa7 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/218021 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 9f00d0c commit 76dadee

File tree

49 files changed

+91
-122
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+91
-122
lines changed

pkg/analysis_server/lib/src/cider/completion.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class CiderCompletionComputer {
3232
final OperationPerformanceImpl _performanceRoot =
3333
OperationPerformanceImpl('<root>');
3434

35-
late DartCompletionRequestImpl _dartCompletionRequest;
35+
late DartCompletionRequest _dartCompletionRequest;
3636

3737
/// Paths of imported libraries for which suggestions were (re)computed
3838
/// during processing of this request. Does not include libraries that were
@@ -78,7 +78,7 @@ class CiderCompletionComputer {
7878
CompletionPerformance(),
7979
);
8080

81-
_dartCompletionRequest = DartCompletionRequestImpl.from(
81+
_dartCompletionRequest = DartCompletionRequest.from(
8282
completionRequest,
8383
);
8484

pkg/analysis_server/lib/src/domain_completion.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ class CompletionDomainHandler extends AbstractRequestHandler {
102102

103103
var contributorTag = 'computeSuggestions - ${manager.runtimeType}';
104104
await perf.runAsync(contributorTag, (performance) async {
105-
var dartRequest = DartCompletionRequestImpl.from(
105+
var dartRequest = DartCompletionRequest.from(
106106
request,
107107
dartdocDirectiveInfo: server.getDartdocDirectiveInfoFor(
108108
request.result,

pkg/analysis_server/lib/src/domains/execution/completion.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ class RuntimeCompletionComputer {
7676
CompletionPerformance(),
7777
);
7878

79-
var dartRequest = DartCompletionRequestImpl.from(request);
79+
var dartRequest = DartCompletionRequest.from(request);
8080

8181
var suggestions = await request.performance.runRequestOperation(
8282
(performance) async {

pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ class CompletionHandler
213213
CompletionRequestImpl(unit, offset, performance);
214214
final directiveInfo =
215215
server.getDartdocDirectiveInfoFor(completionRequest.result);
216-
final dartCompletionRequest = DartCompletionRequestImpl.from(
216+
final dartCompletionRequest = DartCompletionRequest.from(
217217
completionRequest,
218218
dartdocDirectiveInfo: directiveInfo,
219219
completionPreference: CompletionPreference.replace,

pkg/analysis_server/lib/src/provisional/completion/dart/completion_dart.dart

Lines changed: 1 addition & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,8 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'package:analysis_server/src/provisional/completion/completion_core.dart';
6-
import 'package:analysis_server/src/services/completion/dart/feature_computer.dart';
5+
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
76
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
8-
import 'package:analyzer/dart/analysis/features.dart';
9-
import 'package:analyzer/dart/ast/ast.dart';
10-
import 'package:analyzer/dart/element/element.dart';
11-
import 'package:analyzer/dart/element/type.dart';
12-
import 'package:analyzer/src/dartdoc/dartdoc_directive_info.dart';
13-
import 'package:analyzer/src/generated/source.dart';
14-
import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
15-
import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
167

178
export 'package:analyzer_plugin/utilities/completion/relevance.dart';
189

@@ -28,64 +19,3 @@ abstract class DartCompletionContributor {
2819
/// given completion [request] have been added to the [builder].
2920
Future<void> computeSuggestions();
3021
}
31-
32-
/// The information about a requested list of completions within a Dart file.
33-
///
34-
/// Clients may not extend, implement or mix-in this class.
35-
abstract class DartCompletionRequest extends CompletionRequest {
36-
CompletionPreference get completionPreference;
37-
38-
/// Return the type imposed on the target's `containingNode` based on its
39-
/// context, or `null` if the context does not impose any type.
40-
DartType? get contextType;
41-
42-
/// Return the object used to resolve macros in Dartdoc comments.
43-
DartdocDirectiveInfo get dartdocDirectiveInfo;
44-
45-
/// Return the expression to the right of the "dot" or "dot dot",
46-
/// or `null` if this is not a "dot" completion (e.g. `foo.b`).
47-
Expression? get dotTarget;
48-
49-
/// Return the object used to compute the values of the features used to
50-
/// compute relevance scores for suggestions.
51-
FeatureComputer get featureComputer;
52-
53-
/// Return the feature set that was used to analyze the compilation unit in
54-
/// which suggestions are being made.
55-
FeatureSet get featureSet;
56-
57-
/// Return `true` if free standing identifiers should be suggested
58-
bool get includeIdentifiers;
59-
60-
/// Return `true` if the completion is occurring in a constant context.
61-
bool get inConstantContext;
62-
63-
/// Return the library element which contains the unit in which the completion
64-
/// is occurring.
65-
LibraryElement get libraryElement;
66-
67-
/// Answer the [DartType] for Object in dart:core
68-
DartType get objectType;
69-
70-
/// The [OpType] which describes which types of suggestions would fit the
71-
/// request.
72-
OpType get opType;
73-
74-
/// The source range that represents the region of text that should be
75-
/// replaced when a suggestion is selected.
76-
SourceRange get replacementRange;
77-
78-
/// Return the [SourceFactory] of the request.
79-
SourceFactory get sourceFactory;
80-
81-
/// Return the completion target. This determines what part of the parse tree
82-
/// will receive the newly inserted text.
83-
/// At a minimum, all declarations in the completion scope in [target.unit]
84-
/// will be resolved if they can be resolved.
85-
CompletionTarget get target;
86-
87-
/// Return prefix that already exists in the document for [target] or empty
88-
/// string if unavailable. This can be used to filter the completion list to
89-
/// items that already match the text to the left of the caret.
90-
String get targetPrefix;
91-
}

pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import 'package:analysis_server/src/provisional/completion/completion_core.dart';
66
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
7+
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
78
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
89
import 'package:analysis_server/src/utilities/flutter.dart';
910
import 'package:analyzer/dart/ast/ast.dart';

pkg/analysis_server/lib/src/services/completion/dart/combinator_contributor.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import 'package:analysis_server/src/protocol_server.dart'
66
hide Element, ElementKind;
77
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
8+
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
89
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
910
import 'package:analyzer/dart/ast/ast.dart';
1011

pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class DartCompletionManager {
8585
includedSuggestionRelevanceTags == null));
8686

8787
Future<List<CompletionSuggestion>> computeSuggestions(
88-
DartCompletionRequestImpl dartRequest,
88+
DartCompletionRequest dartRequest,
8989
OperationPerformanceImpl performance, {
9090
bool enableOverrideContributor = true,
9191
bool enableUriContributor = true,
@@ -159,7 +159,7 @@ class DartCompletionManager {
159159
return builder.suggestions.toList();
160160
}
161161

162-
void _addIncludedElementKinds(DartCompletionRequestImpl request) {
162+
void _addIncludedElementKinds(DartCompletionRequest request) {
163163
var opType = request.opType;
164164

165165
if (!opType.includeIdentifiers) return;
@@ -192,7 +192,7 @@ class DartCompletionManager {
192192
}
193193
}
194194

195-
void _addIncludedSuggestionRelevanceTags(DartCompletionRequestImpl request) {
195+
void _addIncludedSuggestionRelevanceTags(DartCompletionRequest request) {
196196
final includedSuggestionRelevanceTags =
197197
this.includedSuggestionRelevanceTags!;
198198
var location = request.opType.completionLocation;
@@ -243,31 +243,35 @@ class DartCompletionManager {
243243
}
244244

245245
/// The information about a requested list of completions within a Dart file.
246-
class DartCompletionRequestImpl implements DartCompletionRequest {
247-
@override
246+
class DartCompletionRequest implements CompletionRequest {
248247
final CompletionPreference completionPreference;
249248

250-
@override
249+
/// Return the type imposed on the target's `containingNode` based on its
250+
/// context, or `null` if the context does not impose any type.
251251
final DartType? contextType;
252252

253-
@override
253+
/// Return the object used to resolve macros in Dartdoc comments.
254254
final DartdocDirectiveInfo dartdocDirectiveInfo;
255255

256256
final DocumentationCache? documentationCache;
257257

258-
@override
258+
/// Return the expression to the right of the "dot" or "dot dot",
259+
/// or `null` if this is not a "dot" completion (e.g. `foo.b`).
259260
final Expression? dotTarget;
260261

261-
@override
262+
/// Return the object used to compute the values of the features used to
263+
/// compute relevance scores for suggestions.
262264
final FeatureComputer featureComputer;
263265

264266
@override
265267
final int offset;
266268

267-
@override
269+
/// The [OpType] which describes which types of suggestions would fit the
270+
/// request.
268271
final OpType opType;
269272

270-
@override
273+
/// The source range that represents the region of text that should be
274+
/// replaced when a suggestion is selected.
271275
final SourceRange replacementRange;
272276

273277
final CompletionRequest request;
@@ -278,10 +282,13 @@ class DartCompletionRequestImpl implements DartCompletionRequest {
278282
@override
279283
final Source source;
280284

281-
@override
285+
/// Return the completion target. This determines what part of the parse tree
286+
/// will receive the newly inserted text.
287+
/// At a minimum, all declarations in the completion scope in [target.unit]
288+
/// will be resolved if they can be resolved.
282289
final CompletionTarget target;
283290

284-
DartCompletionRequestImpl._({
291+
DartCompletionRequest._({
285292
required this.completionPreference,
286293
required this.contextType,
287294
required this.dartdocDirectiveInfo,
@@ -297,24 +304,26 @@ class DartCompletionRequestImpl implements DartCompletionRequest {
297304
required this.target,
298305
});
299306

300-
@override
307+
/// Return the feature set that was used to analyze the compilation unit in
308+
/// which suggestions are being made.
301309
FeatureSet get featureSet => libraryElement.featureSet;
302310

303-
@override
311+
/// Return `true` if free standing identifiers should be suggested
304312
bool get includeIdentifiers {
305313
return opType.includeIdentifiers;
306314
}
307315

308-
@override
316+
/// Return `true` if the completion is occurring in a constant context.
309317
bool get inConstantContext {
310318
var entity = target.entity;
311319
return entity is Expression && entity.inConstantContext;
312320
}
313321

314-
@override
322+
/// Return the library element which contains the unit in which the completion
323+
/// is occurring.
315324
LibraryElement get libraryElement => result.libraryElement;
316325

317-
@override
326+
/// Answer the [DartType] for Object in dart:core
318327
DartType get objectType => libraryElement.typeProvider.objectType;
319328

320329
@override
@@ -323,13 +332,15 @@ class DartCompletionRequestImpl implements DartCompletionRequest {
323332
@override
324333
String? get sourceContents => result.content;
325334

326-
@override
335+
/// Return the [SourceFactory] of the request.
327336
SourceFactory get sourceFactory {
328337
var context = result.session.analysisContext as DriverBasedAnalysisContext;
329338
return context.driver.sourceFactory;
330339
}
331340

332-
@override
341+
/// Return prefix that already exists in the document for [target] or empty
342+
/// string if unavailable. This can be used to filter the completion list to
343+
/// items that already match the text to the left of the caret.
333344
String get targetPrefix {
334345
var entity = target.entity;
335346

@@ -364,7 +375,7 @@ class DartCompletionRequestImpl implements DartCompletionRequest {
364375
/// Return a newly created completion request based on the given [request].
365376
/// This method will throw [AbortCompletion] if the completion request has
366377
/// been aborted.
367-
static DartCompletionRequestImpl from(
378+
static DartCompletionRequest from(
368379
CompletionRequest request, {
369380
DartdocDirectiveInfo? dartdocDirectiveInfo,
370381
CompletionPreference completionPreference = CompletionPreference.insert,
@@ -393,7 +404,7 @@ class DartCompletionRequestImpl implements DartCompletionRequest {
393404
opType.includeVoidReturnSuggestions = true;
394405
}
395406

396-
return DartCompletionRequestImpl._(
407+
return DartCompletionRequest._(
397408
completionPreference: completionPreference,
398409
contextType: contextType,
399410
dartdocDirectiveInfo: dartdocDirectiveInfo ?? DartdocDirectiveInfo(),

pkg/analysis_server/lib/src/services/completion/dart/extension_member_contributor.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import 'package:analysis_server/src/protocol_server.dart'
66
show CompletionSuggestionKind;
77
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
8+
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
89
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
910
import 'package:analysis_server/src/utilities/extensions/element.dart';
1011
import 'package:analyzer/dart/ast/ast.dart';

pkg/analysis_server/lib/src/services/completion/dart/field_formal_contributor.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
6+
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
67
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
78
import 'package:analyzer/dart/ast/ast.dart';
89
import 'package:analyzer/dart/element/element.dart';

pkg/analysis_server/lib/src/services/completion/dart/imported_reference_contributor.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
6+
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
67
import 'package:analysis_server/src/services/completion/dart/local_library_contributor.dart';
78
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart'
89
show SuggestionBuilder;

pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,8 @@ class _KeywordVisitor extends GeneralizingAstVisitor<void> {
5656

5757
@override
5858
void visitArgumentList(ArgumentList node) {
59-
if (request is DartCompletionRequestImpl) {
60-
if (request.opType.includeOnlyNamedArgumentSuggestions) {
61-
return;
62-
}
59+
if (request.opType.includeOnlyNamedArgumentSuggestions) {
60+
return;
6361
}
6462
final entity = this.entity;
6563
if (entity == node.rightParenthesis) {

pkg/analysis_server/lib/src/services/completion/dart/label_contributor.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
66
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart'
7-
show DartCompletionRequestImpl;
7+
show DartCompletionRequest;
88
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
99
import 'package:analyzer/dart/ast/ast.dart';
1010
import 'package:analyzer_plugin/src/utilities/visitors/local_declaration_visitor.dart'
@@ -21,7 +21,7 @@ class LabelContributor extends DartCompletionContributor {
2121

2222
@override
2323
Future<void> computeSuggestions() async {
24-
var optype = (request as DartCompletionRequestImpl).opType;
24+
var optype = request.opType;
2525

2626
// Collect suggestions from the specific child [AstNode] that contains
2727
// the completion offset and all of its parents recursively.

pkg/analysis_server/lib/src/services/completion/dart/library_member_contributor.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import 'package:analysis_server/src/protocol_server.dart'
66
show CompletionSuggestionKind;
77
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
8+
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
89
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
910
import 'package:analyzer/dart/ast/ast.dart';
1011
import 'package:analyzer/dart/element/element.dart';

pkg/analysis_server/lib/src/services/completion/dart/library_prefix_contributor.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
6+
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
67
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
78

89
/// A contributor that produces suggestions based on the prefixes defined on

pkg/analysis_server/lib/src/services/completion/dart/local_library_contributor.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import 'package:analysis_server/src/protocol_server.dart'
66
show CompletionSuggestionKind;
77
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
8+
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
89
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart'
910
show SuggestionBuilder;
1011
import 'package:analyzer/dart/element/element.dart';

pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import 'package:analysis_server/src/protocol_server.dart'
66
show CompletionSuggestionKind;
77
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
8+
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
89
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
910
import 'package:analyzer/dart/ast/ast.dart';
1011
import 'package:analyzer/dart/element/element.dart';

pkg/analysis_server/lib/src/services/completion/dart/named_constructor_contributor.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import 'package:analysis_server/src/protocol_server.dart' as protocol;
66
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
7+
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
78
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
89
import 'package:analysis_server/src/utilities/extensions/completion_request.dart';
910
import 'package:analyzer/dart/ast/ast.dart';

0 commit comments

Comments
 (0)