Set CompletionSuggestion.elementUri everywhere in analysis server that element is already being set.
This CL is a follow-up to https://dart-review.googlesource.com/c/sdk/+/88428
which added a new, optional elementUri to the CompletionSuggestion type
in analysis server protocol. Here, we're aiming to set the elementUri
whenever we have that information readily available.
R=brianwilkerson@google.com
Change-Id: I6dcf8a4029928432a80fc02ed97ee614eb75d986
Reviewed-on: https://dart-review.googlesource.com/c/89441
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Ari Aye <ariaye@google.com>
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 f7ddb32..85c9fa6 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
@@ -280,6 +280,7 @@
if (parameter is FieldFormalParameterElement) {
_setDocumentation(suggestion, parameter.field?.documentationComment);
suggestion.element = convertElement(parameter);
+ suggestion.elementUri = parameter.source.toString();
}
suggestions.add(suggestion);
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 77b4ebf..d89ed2f 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
@@ -103,6 +103,7 @@
suggestion.element = createLocalElement(
request.source, protocol.ElementKind.LABEL, label.label,
returnType: NO_RETURN_TYPE);
+ suggestion.elementUri = request.source.toString();
}
}
}
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 a883a59..c335b79 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
@@ -342,6 +342,7 @@
isDeprecated: isDeprecated,
parameters: param?.toSource(),
returnType: typeName);
+ suggestion.elementUri = request.source.toString();
if ((elemKind == protocol.ElementKind.METHOD ||
elemKind == protocol.ElementKind.FUNCTION) &&
param != null) {
@@ -383,6 +384,7 @@
constantDeclaration.name.length,
0,
0));
+ suggestion.elementUri = request.source.uri.toString();
}
void _addLocalSuggestion_includeReturnValueSuggestions(
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 aa25fba..99eb8b5 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
@@ -129,6 +129,7 @@
false,
displayText: displayText);
suggestion.element = protocol.convertElement(signature.element);
+ suggestion.elementUri = signature.element.source.toString();
return suggestion;
}
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 7c65f43..5f66d87 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
@@ -51,6 +51,7 @@
suggestion.docSummary = getDartDocSummary(doc);
suggestion.element = protocol.convertElement(element);
+ suggestion.elementUri = element.source.uri.toString();
Element enclosingElement = element.enclosingElement;
if (enclosingElement is ClassElement) {
suggestion.declaringType = enclosingElement.displayName;
@@ -165,6 +166,7 @@
CompletionSuggestion suggestion = createSuggestion(element,
completion: completion, kind: kind, relevance: relevance);
if (suggestion != null) {
+ suggestion.elementUri = element.source.uri.toString();
if (element.isSynthetic && element is PropertyAccessorElement) {
String cacheKey;
if (element.isGetter) {
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 0a1300f..1bbf623 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
@@ -43,8 +43,9 @@
void main() {f^}''');
await computeSuggestions();
- assertSuggestFunction('foo', 'bool',
+ CompletionSuggestion cs = assertSuggestFunction('foo', 'bool',
defaultArgListString: 'bar, baz: null');
+ expect(cs.elementUri, equals('package:test/b.dart'));
}
test_ArgumentList() async {
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 e13ad70..af3d4f8 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
@@ -4,6 +4,7 @@
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
import 'package:analysis_server/src/services/completion/dart/library_member_contributor.dart';
+import 'package:analyzer_plugin/protocol/protocol_common.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -26,7 +27,8 @@
// SimpleIdentifier PrefixedIdentifier ExpressionStatement
addTestSource('import "dart:async" as bar; foo() {bar.^}');
await computeSuggestions();
- assertSuggestClass('Future');
+ CompletionSuggestion cs = assertSuggestClass('Future');
+ expect(cs.elementUri, equals('dart:async'));
assertNotSuggested('loadLibrary');
}
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 8e5f942..f38def7 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
@@ -4,6 +4,7 @@
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
import 'package:analysis_server/src/services/completion/dart/local_library_contributor.dart';
+import 'package:analyzer_plugin/protocol/protocol_common.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -42,7 +43,8 @@
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
- assertSuggestConstructor('A');
+ CompletionSuggestion cs = assertSuggestConstructor('A');
+ expect(cs.elementUri, 'package:test/a.dart');
// Suggested by LocalConstructorContributor
assertNotSuggested('B.bar');
// Suggested by ImportedReferenceContributor
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 ffa3f3a..46f6151 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
@@ -68,10 +68,11 @@
void main() {h^}''');
await computeSuggestions();
- assertSuggestFunction('hasLength', 'bool',
+ CompletionSuggestion cs = assertSuggestFunction('hasLength', 'bool',
relevance: DART_RELEVANCE_LOCAL_FUNCTION,
defaultArgListString: 'a, b',
defaultArgumentListTextRanges: [0, 1, 3, 1]);
+ expect(cs.elementUri, equals('/home/test/lib/test.dart'));
}
test_ArgDefaults_function_none() async {