mirror of
https://github.com/dart-lang/sdk
synced 2024-09-15 22:19:49 +00:00
Clean up the return type of the contributors compute method
All of the contributors now contribute through the builder so the return value was always an empty list. Change-Id: I9e5746a7c7e2dc256a00c6091f6bf9d46331b617 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/150803 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
parent
d1b0713e8b
commit
01f284c661
|
@ -13,7 +13,6 @@ 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/protocol/protocol_common.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
|
||||
|
||||
|
@ -22,11 +21,9 @@ export 'package:analyzer_plugin/utilities/completion/relevance.dart';
|
|||
/// An object that contributes results for the `completion.getSuggestions`
|
||||
/// request results.
|
||||
abstract class DartCompletionContributor {
|
||||
/// Return a [Future] that completes with a list of suggestions
|
||||
/// for the given completion [request].
|
||||
// TODO(brianwilkerson) When all of the suggestions are being built using the
|
||||
// builder, change the return type to `Future<void>`.
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
/// Return a [Future] that completes when the suggestions appropriate for the
|
||||
/// given completion [request] have been added to the [builder].
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder);
|
||||
}
|
||||
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
|
||||
import 'dart:async';
|
||||
|
||||
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/suggestion_builder.dart';
|
||||
import 'package:analysis_server/src/utilities/flutter.dart';
|
||||
|
@ -29,11 +27,11 @@ class ArgListContributor extends DartCompletionContributor {
|
|||
ArgumentList argumentList;
|
||||
|
||||
@override
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder) async {
|
||||
var executable = request.target.executableElement;
|
||||
if (executable == null) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
var node = request.target.containingNode;
|
||||
if (node is ArgumentList) {
|
||||
|
@ -43,7 +41,6 @@ class ArgListContributor extends DartCompletionContributor {
|
|||
this.request = request;
|
||||
this.builder = builder;
|
||||
_addSuggestions(executable.parameters);
|
||||
return const <CompletionSuggestion>[];
|
||||
}
|
||||
|
||||
void _addDefaultParamSuggestions(Iterable<ParameterElement> parameters,
|
||||
|
|
|
@ -15,11 +15,11 @@ import 'package:analyzer/dart/element/element.dart';
|
|||
/// when the completion is in a show or hide combinator of an import or export.
|
||||
class CombinatorContributor extends DartCompletionContributor {
|
||||
@override
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder) async {
|
||||
var node = request.target.containingNode;
|
||||
if (node is! Combinator) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
// Build the list of suggestions.
|
||||
var directive = node.thisOrAncestorOfType<NamespaceDirective>();
|
||||
|
@ -35,7 +35,6 @@ class CombinatorContributor extends DartCompletionContributor {
|
|||
}
|
||||
}
|
||||
}
|
||||
return const <CompletionSuggestion>[];
|
||||
}
|
||||
|
||||
List<String> _getCombinatorNames(NamespaceDirective directive) {
|
||||
|
|
|
@ -184,14 +184,9 @@ class DartCompletionManager implements CompletionContributor {
|
|||
var contributorTag =
|
||||
'DartCompletionManager - ${contributor.runtimeType}';
|
||||
performance.logStartTime(contributorTag);
|
||||
var contributorSuggestions =
|
||||
await contributor.computeSuggestions(dartRequest, builder);
|
||||
await contributor.computeSuggestions(dartRequest, builder);
|
||||
performance.logElapseTime(contributorTag);
|
||||
request.checkAborted();
|
||||
|
||||
for (var newSuggestion in contributorSuggestions) {
|
||||
addSuggestionToMap(newSuggestion);
|
||||
}
|
||||
}
|
||||
for (var newSuggestion in builder.suggestions) {
|
||||
addSuggestionToMap(newSuggestion);
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:analysis_server/src/protocol_server.dart'
|
||||
show CompletionSuggestion;
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
|
@ -23,13 +21,13 @@ class ExtensionMemberContributor extends DartCompletionContributor {
|
|||
MemberSuggestionBuilder memberBuilder;
|
||||
|
||||
@override
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder) async {
|
||||
var containingLibrary = request.libraryElement;
|
||||
// Gracefully degrade if the library could not be determined, such as with a
|
||||
// detached part file or source change.
|
||||
if (containingLibrary == null) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
|
||||
memberBuilder = MemberSuggestionBuilder(request, builder);
|
||||
|
@ -63,24 +61,23 @@ class ExtensionMemberContributor extends DartCompletionContributor {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
|
||||
if (expression.isSynthetic) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
if (expression is Identifier) {
|
||||
var elem = expression.staticElement;
|
||||
if (elem is ClassElement) {
|
||||
// Suggestions provided by StaticMemberContributor.
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
} else if (elem is ExtensionElement) {
|
||||
// Suggestions provided by StaticMemberContributor.
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
} else if (elem is PrefixElement) {
|
||||
// Suggestions provided by LibraryMemberContributor.
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (expression is ExtensionOverride) {
|
||||
|
@ -92,12 +89,11 @@ class ExtensionMemberContributor extends DartCompletionContributor {
|
|||
// get to this point, but there's an NPE if we invoke
|
||||
// `_resolveExtendedType` when `type` is `null`, so we guard against it
|
||||
// to ensure that we can return the suggestions from other providers.
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
_addExtensionMembers(containingLibrary, type);
|
||||
expression.staticType;
|
||||
}
|
||||
return const <CompletionSuggestion>[];
|
||||
}
|
||||
|
||||
void _addExtensionMembers(LibraryElement containingLibrary, DartType type) {
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
|
||||
import 'dart:async';
|
||||
|
||||
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/suggestion_builder.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
|
@ -16,19 +14,19 @@ import 'package:analyzer/dart/ast/ast.dart';
|
|||
/// expressions of the form `this.^` in a constructor's parameter list.
|
||||
class FieldFormalContributor extends DartCompletionContributor {
|
||||
@override
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder) async {
|
||||
var node = request.target.containingNode;
|
||||
// TODO(brianwilkerson) We should suggest field formal parameters even if
|
||||
// the user hasn't already typed the `this.` prefix, by including the
|
||||
// prefix in the completion.
|
||||
if (node is! FieldFormalParameter) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
|
||||
var constructor = node.thisOrAncestorOfType<ConstructorDeclaration>();
|
||||
if (constructor == null) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
|
||||
// Compute the list of fields already referenced in the constructor.
|
||||
|
@ -52,7 +50,7 @@ class FieldFormalContributor extends DartCompletionContributor {
|
|||
|
||||
var enclosingClass = constructor.thisOrAncestorOfType<ClassDeclaration>();
|
||||
if (enclosingClass == null) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
|
||||
// Add suggestions for fields that are not already referenced.
|
||||
|
@ -71,6 +69,5 @@ class FieldFormalContributor extends DartCompletionContributor {
|
|||
}
|
||||
}
|
||||
}
|
||||
return const <CompletionSuggestion>[];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:analysis_server/src/protocol_server.dart'
|
||||
show CompletionSuggestion;
|
||||
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:analysis_server/src/services/completion/dart/suggestion_builder.dart'
|
||||
|
@ -15,15 +13,15 @@ import 'package:analyzer/src/generated/resolver.dart';
|
|||
/// A contributor for calculating suggestions for imported top level members.
|
||||
class ImportedReferenceContributor extends DartCompletionContributor {
|
||||
@override
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder) async {
|
||||
if (!request.includeIdentifiers) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
|
||||
var imports = request.libraryElement.imports;
|
||||
if (imports == null) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
|
||||
// Traverse imports including dart:core
|
||||
|
@ -34,7 +32,6 @@ class ImportedReferenceContributor extends DartCompletionContributor {
|
|||
prefix: importElement.prefix?.name);
|
||||
}
|
||||
}
|
||||
return const <CompletionSuggestion>[];
|
||||
}
|
||||
|
||||
void _buildSuggestions(DartCompletionRequest request,
|
||||
|
|
|
@ -13,7 +13,6 @@ import 'package:analyzer/dart/ast/ast.dart';
|
|||
import 'package:analyzer/dart/ast/token.dart';
|
||||
import 'package:analyzer/dart/ast/visitor.dart';
|
||||
import 'package:analyzer/src/dart/ast/token.dart';
|
||||
import 'package:analyzer_plugin/protocol/protocol_common.dart';
|
||||
import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
|
||||
|
||||
const ASYNC_STAR = 'async*';
|
||||
|
@ -29,14 +28,13 @@ const YIELD_STAR = 'yield*';
|
|||
/// are valid at the completion point.
|
||||
class KeywordContributor extends DartCompletionContributor {
|
||||
@override
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder) async {
|
||||
// Don't suggest anything right after double or integer literals.
|
||||
if (request.target.isDoubleOrIntLiteral()) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
request.target.containingNode.accept(_KeywordVisitor(request, builder));
|
||||
return const <CompletionSuggestion>[];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:analysis_server/src/protocol_server.dart'
|
||||
show CompletionSuggestion;
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart'
|
||||
show DartCompletionRequestImpl;
|
||||
|
@ -19,7 +17,7 @@ import 'package:analyzer_plugin/src/utilities/visitors/local_declaration_visitor
|
|||
/// `continue` statements.
|
||||
class LabelContributor extends DartCompletionContributor {
|
||||
@override
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder) async {
|
||||
var optype = (request as DartCompletionRequestImpl).opType;
|
||||
|
||||
|
@ -33,7 +31,6 @@ class LabelContributor extends DartCompletionContributor {
|
|||
.visit(request.target.containingNode);
|
||||
}
|
||||
}
|
||||
return const <CompletionSuggestion>[];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,21 +4,20 @@
|
|||
|
||||
import 'dart:async';
|
||||
|
||||
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/suggestion_builder.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
import 'package:analyzer/dart/element/element.dart';
|
||||
|
||||
import '../../../protocol_server.dart'
|
||||
show CompletionSuggestion, CompletionSuggestionKind;
|
||||
|
||||
/// A contributor that produces suggestions based on the members of a library
|
||||
/// when the library was imported using a prefix. More concretely, this class
|
||||
/// produces suggestions for expressions of the form `p.^`, where `p` is a
|
||||
/// prefix.
|
||||
class LibraryMemberContributor extends DartCompletionContributor {
|
||||
@override
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder) async {
|
||||
// Determine if the target looks like a library prefix.
|
||||
var targetId = request.dotTarget;
|
||||
|
@ -31,15 +30,15 @@ class LibraryMemberContributor extends DartCompletionContributor {
|
|||
if (containingLibrary != null) {
|
||||
var imports = containingLibrary.imports;
|
||||
if (imports != null) {
|
||||
return _buildSuggestions(request, builder, elem, imports);
|
||||
_buildSuggestions(request, builder, elem, imports);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return const <CompletionSuggestion>[];
|
||||
}
|
||||
|
||||
List<CompletionSuggestion> _buildSuggestions(
|
||||
void _buildSuggestions(
|
||||
DartCompletionRequest request,
|
||||
SuggestionBuilder builder,
|
||||
PrefixElement elem,
|
||||
|
@ -83,6 +82,5 @@ class LibraryMemberContributor extends DartCompletionContributor {
|
|||
}
|
||||
}
|
||||
}
|
||||
return const <CompletionSuggestion>[];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:analysis_server/src/protocol_server.dart'
|
||||
show CompletionSuggestion;
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
|
||||
|
||||
|
@ -13,15 +11,15 @@ import 'package:analysis_server/src/services/completion/dart/suggestion_builder.
|
|||
/// import directives.
|
||||
class LibraryPrefixContributor extends DartCompletionContributor {
|
||||
@override
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder) async {
|
||||
if (!request.includeIdentifiers) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
|
||||
var imports = request.libraryElement.imports;
|
||||
if (imports == null) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
|
||||
for (var element in imports) {
|
||||
|
@ -33,6 +31,5 @@ class LibraryPrefixContributor extends DartCompletionContributor {
|
|||
}
|
||||
}
|
||||
}
|
||||
return const <CompletionSuggestion>[];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:analysis_server/src/protocol_server.dart'
|
||||
show CompletionSuggestion, CompletionSuggestionKind;
|
||||
show CompletionSuggestionKind;
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart'
|
||||
show SuggestionBuilder;
|
||||
|
@ -148,15 +148,15 @@ class LibraryElementSuggestionBuilder extends GeneralizingElementVisitor {
|
|||
/// which the completion is requested.
|
||||
class LocalLibraryContributor extends DartCompletionContributor {
|
||||
@override
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder) async {
|
||||
if (!request.includeIdentifiers) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
|
||||
var libraryUnits = request.result.unit.declaredElement.library.units;
|
||||
if (libraryUnits == null) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
|
||||
var visitor = LibraryElementSuggestionBuilder(request, builder);
|
||||
|
@ -165,6 +165,5 @@ class LocalLibraryContributor extends DartCompletionContributor {
|
|||
unit.accept(visitor);
|
||||
}
|
||||
}
|
||||
return const <CompletionSuggestion>[];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:analysis_server/src/protocol_server.dart'
|
||||
show CompletionSuggestion, CompletionSuggestionKind;
|
||||
show CompletionSuggestionKind;
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
|
||||
import 'package:analysis_server/src/utilities/strings.dart';
|
||||
|
@ -37,7 +37,7 @@ class LocalReferenceContributor extends DartCompletionContributor {
|
|||
_VisibilityTracker visibilityTracker = _VisibilityTracker();
|
||||
|
||||
@override
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder) async {
|
||||
var opType = request.opType;
|
||||
var node = request.target.containingNode;
|
||||
|
@ -92,7 +92,6 @@ class LocalReferenceContributor extends DartCompletionContributor {
|
|||
}
|
||||
}
|
||||
}
|
||||
return const <CompletionSuggestion>[];
|
||||
}
|
||||
|
||||
void _addSuggestionsForType(InterfaceType type, DartCompletionRequest request,
|
||||
|
|
|
@ -8,7 +8,6 @@ import 'package:analysis_server/src/provisional/completion/dart/completion_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';
|
||||
import 'package:analyzer_plugin/protocol/protocol_common.dart' hide Element;
|
||||
|
||||
/// A contributor that produces suggestions based on the named constructors
|
||||
/// defined on a given class. More concretely, this class produces suggestions
|
||||
|
@ -16,13 +15,13 @@ import 'package:analyzer_plugin/protocol/protocol_common.dart' hide Element;
|
|||
/// class.
|
||||
class NamedConstructorContributor extends DartCompletionContributor {
|
||||
@override
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder) async {
|
||||
var node = request.target.containingNode;
|
||||
if (node is ConstructorName) {
|
||||
var libraryElement = request.libraryElement;
|
||||
if (libraryElement == null) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
var typeName = node.type;
|
||||
if (typeName != null) {
|
||||
|
@ -35,7 +34,6 @@ class NamedConstructorContributor extends DartCompletionContributor {
|
|||
}
|
||||
}
|
||||
}
|
||||
return const <CompletionSuggestion>[];
|
||||
}
|
||||
|
||||
void _buildSuggestions(
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
|
||||
import 'dart:async';
|
||||
|
||||
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/suggestion_builder.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
|
@ -15,15 +14,15 @@ import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart'
|
|||
/// inside a class declaration with templates for inherited members.
|
||||
class OverrideContributor implements DartCompletionContributor {
|
||||
@override
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder) async {
|
||||
var targetId = _getTargetId(request.target);
|
||||
if (targetId == null) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
var classDecl = targetId.thisOrAncestorOfType<ClassOrMixinDeclaration>();
|
||||
if (classDecl == null) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
|
||||
var inheritance = InheritanceManager3();
|
||||
|
@ -36,7 +35,6 @@ class OverrideContributor implements DartCompletionContributor {
|
|||
_namesToOverride(classElem.librarySource.uri, interface);
|
||||
|
||||
// Build suggestions
|
||||
var suggestions = <CompletionSuggestion>[];
|
||||
for (var name in namesToOverride) {
|
||||
var element = interfaceMap[name];
|
||||
// Gracefully degrade if the overridden element has not been resolved.
|
||||
|
@ -45,7 +43,6 @@ class OverrideContributor implements DartCompletionContributor {
|
|||
await builder.suggestOverride(targetId, element, invokeSuper);
|
||||
}
|
||||
}
|
||||
return suggestions;
|
||||
}
|
||||
|
||||
/// If the target looks like a partial identifier inside a class declaration
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:analysis_server/src/protocol_server.dart'
|
||||
show CompletionSuggestion;
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
|
@ -17,7 +15,7 @@ import 'package:analyzer/dart/element/element.dart';
|
|||
/// class, enum, or extension.
|
||||
class StaticMemberContributor extends DartCompletionContributor {
|
||||
@override
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder) async {
|
||||
var library = request.libraryElement;
|
||||
if (library == null) {
|
||||
|
@ -25,7 +23,7 @@ class StaticMemberContributor extends DartCompletionContributor {
|
|||
// detached part file or source change.
|
||||
// TODO(brianwilkerson) Consider testing for this before invoking _any_ of
|
||||
// the contributors.
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
bool isVisible(Element element) => element.isAccessibleIn(library);
|
||||
var targetId = request.dotTarget;
|
||||
|
@ -76,6 +74,5 @@ class StaticMemberContributor extends DartCompletionContributor {
|
|||
}
|
||||
}
|
||||
}
|
||||
return const <CompletionSuggestion>[];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,8 +5,6 @@
|
|||
import 'dart:async';
|
||||
import 'dart:collection';
|
||||
|
||||
import 'package:analysis_server/src/protocol_server.dart'
|
||||
show CompletionSuggestion;
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
|
@ -21,13 +19,13 @@ import 'package:analyzer_plugin/src/utilities/visitors/local_declaration_visitor
|
|||
/// instance of a type.
|
||||
class TypeMemberContributor extends DartCompletionContributor {
|
||||
@override
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder) async {
|
||||
var containingLibrary = request.libraryElement;
|
||||
// Gracefully degrade if the library could not be determined, such as with a
|
||||
// detached part file or source change.
|
||||
if (containingLibrary == null) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
|
||||
// Recompute the target because resolution might have changed it.
|
||||
|
@ -35,17 +33,17 @@ class TypeMemberContributor extends DartCompletionContributor {
|
|||
if (expression == null ||
|
||||
expression.isSynthetic ||
|
||||
expression is ExtensionOverride) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
if (expression is Identifier) {
|
||||
var elem = expression.staticElement;
|
||||
if (elem is ClassElement) {
|
||||
// Suggestions provided by StaticMemberContributor.
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
if (elem is PrefixElement) {
|
||||
// Suggestions provided by LibraryMemberContributor.
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -96,8 +94,6 @@ class TypeMemberContributor extends DartCompletionContributor {
|
|||
memberBuilder.buildSuggestions(type,
|
||||
mixins: mixins, superclassConstraints: superclassConstraints);
|
||||
}
|
||||
|
||||
return const <CompletionSuggestion>[];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,8 +5,6 @@
|
|||
import 'dart:async';
|
||||
import 'dart:core';
|
||||
|
||||
import 'package:analysis_server/src/protocol_server.dart'
|
||||
show CompletionSuggestion;
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
|
||||
import 'package:analyzer/dart/ast/ast.dart';
|
||||
|
@ -25,11 +23,10 @@ class UriContributor extends DartCompletionContributor {
|
|||
static bool suggestFilePaths = true;
|
||||
|
||||
@override
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder) async {
|
||||
var visitor = _UriSuggestionBuilder(request, builder);
|
||||
request.target.containingNode.accept(visitor);
|
||||
return const <CompletionSuggestion>[];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:analysis_server/src/protocol_server.dart'
|
||||
show CompletionSuggestion;
|
||||
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
|
||||
import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
|
||||
import 'package:analysis_server/src/services/correction/name_suggestion.dart';
|
||||
|
@ -16,7 +14,7 @@ import 'package:analyzer_plugin/src/utilities/completion/completion_target.dart'
|
|||
/// static type of the variable.
|
||||
class VariableNameContributor extends DartCompletionContributor {
|
||||
@override
|
||||
Future<List<CompletionSuggestion>> computeSuggestions(
|
||||
Future<void> computeSuggestions(
|
||||
DartCompletionRequest request, SuggestionBuilder builder) async {
|
||||
var opType = request.opType;
|
||||
|
||||
|
@ -65,7 +63,7 @@ class VariableNameContributor extends DartCompletionContributor {
|
|||
}
|
||||
}
|
||||
if (strName == null) {
|
||||
return const <CompletionSuggestion>[];
|
||||
return;
|
||||
}
|
||||
|
||||
var doIncludePrivateVersion =
|
||||
|
@ -80,7 +78,6 @@ class VariableNameContributor extends DartCompletionContributor {
|
|||
}
|
||||
}
|
||||
}
|
||||
return const <CompletionSuggestion>[];
|
||||
}
|
||||
|
||||
/// Given some [name], add a suggestion with the name (unless the name is
|
||||
|
|
|
@ -55,8 +55,8 @@ abstract class DartCompletionContributorTest
|
|||
Future<List<CompletionSuggestion>> computeContributedSuggestions(
|
||||
DartCompletionRequest request) async {
|
||||
var builder = SuggestionBuilder(request);
|
||||
var suggestions = await contributor.computeSuggestions(request, builder);
|
||||
return [...suggestions, ...builder.suggestions];
|
||||
await contributor.computeSuggestions(request, builder);
|
||||
return builder.suggestions.toList();
|
||||
}
|
||||
|
||||
DartCompletionContributor createContributor();
|
||||
|
|
Loading…
Reference in a new issue