Skip to content

Commit c7d0e32

Browse files
keertipCommit Queue
authored andcommitted
[Elements.migrate] Migrate CandidateSuggestion.
Change-Id: I664ab34e7c674582d98f3c75d3fffe41d8cf8be5 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/396201 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Keerti Parthasarathy <[email protected]>
1 parent d38e0ff commit c7d0e32

File tree

13 files changed

+534
-400
lines changed

13 files changed

+534
-400
lines changed

pkg/analysis_server/analyzer_use_new_elements.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ lib/plugin/protocol/protocol_dart.dart
22
lib/src/analysis_server.dart
33
lib/src/cider/completion.dart
44
lib/src/cider/fixes.dart
5-
lib/src/cider/local_library_contributor.dart
65
lib/src/cider/rename.dart
76
lib/src/computer/computer_call_hierarchy.dart
87
lib/src/computer/computer_documentation.dart
@@ -28,7 +27,6 @@ lib/src/operation/operation_analysis.dart
2827
lib/src/protocol_server.dart
2928
lib/src/search/element_references.dart
3029
lib/src/search/type_hierarchy.dart
31-
lib/src/services/completion/dart/candidate_suggestion.dart
3230
lib/src/services/completion/dart/completion_manager.dart
3331
lib/src/services/completion/dart/completion_state.dart
3432
lib/src/services/completion/dart/declaration_helper.dart
@@ -37,7 +35,6 @@ lib/src/services/completion/dart/identifier_helper.dart
3735
lib/src/services/completion/dart/in_scope_completion_pass.dart
3836
lib/src/services/completion/dart/not_imported_completion_pass.dart
3937
lib/src/services/completion/dart/relevance_computer.dart
40-
lib/src/services/completion/dart/suggestion_builder.dart
4138
lib/src/services/completion/dart/utilities.dart
4239
lib/src/services/completion/dart/visibility_tracker.dart
4340
lib/src/services/completion/postfix/postfix_completion.dart

pkg/analysis_server/lib/plugin/protocol/protocol_dart.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ Element convertElement2(engine.Element2 element) {
4545
var name = getElementDisplayName2(element);
4646
var elementTypeParameters = _getTypeParametersString2(element);
4747
var aliasedType = getAliasedTypeString2(element);
48-
var elementParameters = _getParametersString2(element);
48+
var elementParameters = getParametersString2(element);
4949
var elementReturnType = getReturnTypeString2(element);
5050
return Element(
5151
kind,
@@ -238,7 +238,7 @@ String? getParametersString(engine.Element element) {
238238
return '($sb)';
239239
}
240240

241-
String? _getParametersString2(engine.Element2 element) {
241+
String? getParametersString2(engine.Element2 element) {
242242
// TODO(scheglov): expose the corresponding feature from ExecutableElement
243243
List<engine.FormalParameterElement> parameters;
244244
if (element is engine.ExecutableElement2) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ class LibraryElementSuggestionBuilder
219219
}
220220
}
221221
if (opType.includeReturnValueSuggestions) {
222-
var typeSystem = request.libraryElement.typeSystem;
222+
var typeSystem = request.libraryElement2.typeSystem;
223223
var contextType = request.contextType;
224224
if (contextType is InterfaceType) {
225225
// TODO(scheglov): This looks not ideal - we should suggest getters.

pkg/analysis_server/lib/src/lsp/completion_utils.dart

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import 'package:analysis_server/src/computer/computer_documentation.dart';
99
import 'package:analysis_server/src/lsp/client_capabilities.dart';
1010
import 'package:analysis_server/src/lsp/dartdoc.dart';
1111
import 'package:analysis_server/src/lsp/mapping.dart';
12-
import 'package:analysis_server/src/protocol_server.dart'
13-
show getReturnTypeString;
1412
import 'package:analysis_server/src/protocol_server.dart' as server;
1513
import 'package:analysis_server/src/services/completion/dart/candidate_suggestion.dart';
1614
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
@@ -19,8 +17,10 @@ import 'package:analysis_server/src/utilities/extensions/ast.dart';
1917
import 'package:analysis_server/src/utilities/extensions/element.dart';
2018
import 'package:analysis_server/src/utilities/extensions/string.dart';
2119
import 'package:analyzer/dart/element/element.dart';
20+
import 'package:analyzer/dart/element/element2.dart';
2221
import 'package:analyzer/source/line_info.dart' as server;
2322
import 'package:analyzer/src/dartdoc/dartdoc_directive_info.dart';
23+
import 'package:analyzer/src/utilities/extensions/element.dart';
2424
import 'package:analyzer_plugin/src/utilities/client_uri_converter.dart';
2525
import 'package:analyzer_plugin/src/utilities/documentation.dart';
2626
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
@@ -40,7 +40,7 @@ Future<OverrideData?> createOverrideSuggestionData(
4040
builder,
4141
) {
4242
builder.addReplacement(suggestion.replacementRange, (builder) {
43-
builder.writeOverride(
43+
builder.writeOverride2(
4444
suggestion.element,
4545
displayTextBuffer: displayTextBuffer,
4646
invokeSuper: suggestion.shouldInvokeSuper,
@@ -127,7 +127,7 @@ Future<lsp.CompletionItem?> toLspCompletionItem(
127127
// functions but they should not be included in the completions.
128128
var element =
129129
suggestion is ElementBasedSuggestion
130-
? (suggestion as ElementBasedSuggestion).element
130+
? (suggestion as ElementBasedSuggestion).element.asElement
131131
: null;
132132
var isCallable =
133133
element != null &&
@@ -226,21 +226,21 @@ Future<lsp.CompletionItem?> toLspCompletionItem(
226226
if (suggestion is ElementBasedSuggestion) {
227227
var element = (suggestion as ElementBasedSuggestion).element;
228228

229-
if (element is ExecutableElement && element is! PropertyAccessorElement) {
229+
if (element is ExecutableElement2 && element is! PropertyAccessorElement2) {
230230
parameterNames =
231-
element.parameters.map((parameter) {
232-
return parameter.name;
231+
element.formalParameters.map((parameter) {
232+
return parameter.displayName;
233233
}).toList();
234234

235-
var requiredParameters = element.parameters.where(
236-
(ParameterElement param) => param.isRequiredPositional,
235+
var requiredParameters = element.formalParameters.where(
236+
(FormalParameterElement param) => param.isRequiredPositional,
237237
);
238238

239-
var namedParameters = element.parameters.where(
240-
(ParameterElement param) => param.isNamed,
239+
var namedParameters = element.formalParameters.where(
240+
(FormalParameterElement param) => param.isNamed,
241241
);
242242

243-
defaultArgumentList = computeCompletionDefaultArgumentList(
243+
defaultArgumentList = computeCompletionDefaultArgumentList2(
244244
element,
245245
requiredParameters,
246246
namedParameters,
@@ -382,7 +382,7 @@ lsp.CompletionItemKind? _candidateToCompletionItemKind(
382382

383383
if (suggestion is ElementBasedSuggestion) {
384384
return _elementToCompletionItemKind(
385-
(suggestion as ElementBasedSuggestion).element,
385+
(suggestion as ElementBasedSuggestion).element.asElement!,
386386
supportedCompletionKinds,
387387
).firstWhereOrNull(isSupported);
388388
}
@@ -533,15 +533,15 @@ CompletionDetail _getCompletionDetail(
533533
}
534534
String? parameters;
535535
if (element != null) {
536-
parameters = getParametersString(element);
536+
parameters = getParametersString2(element);
537537
// Prefer the element return type (because it may be more specific
538538
// for overrides) and fall back to the parameter type or return type from the
539539
// suggestion (handles records).
540540
String? parameterType;
541-
if (element is ParameterElement) {
541+
if (element is FormalParameterElement) {
542542
parameterType = element.type.getDisplayString();
543543
}
544-
returnType = getReturnTypeString(element) ?? parameterType;
544+
returnType = server.getReturnTypeString2(element) ?? parameterType;
545545

546546
// Extract the type from setters to be shown in the place a return type
547547
// would usually be shown.
@@ -575,7 +575,10 @@ CompletionDetail _getCompletionDetail(
575575

576576
// Use the full signature in the details popup.
577577
var detail = fullSignature;
578-
if (element != null && element.hasDeprecated && !supportsDeprecated) {
578+
if (element != null &&
579+
(element is Annotatable &&
580+
(element as Annotatable).metadata2.hasDeprecated) &&
581+
!supportsDeprecated) {
579582
// If the item is deprecated and we don't support the native deprecated flag
580583
// then include it in the details.
581584
detail = '$detail\n\n(Deprecated)'.trim();
@@ -638,11 +641,11 @@ _ElementDocumentation? _getDocsFromComputer(
638641

639642
/// If the [element] has a documentation comment, return it.
640643
String? _getDocumentation(
641-
Element element,
644+
Element2 element,
642645
DartCompletionRequest request,
643646
DocumentationPreference includeDocumentation,
644647
) {
645-
var docs = _getDocsFromComputer(element, request);
648+
var docs = _getDocsFromComputer(element.asElement!, request);
646649

647650
var doc = removeDartDocDelimiters(docs?.full);
648651
var rawDoc =

0 commit comments

Comments
 (0)