| Index: pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart
|
| diff --git a/pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart b/pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart
|
| index 0eafdee6451a528331382914d6b3b1deb0778212..8be796345634bfcd7e4fc423bb6c0a2f745fd91c 100644
|
| --- a/pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart
|
| +++ b/pkg/analysis_server/lib/src/services/completion/suggestion_builder.dart
|
| @@ -14,8 +14,7 @@ import 'package:analyzer/src/generated/ast.dart';
|
| import 'package:analyzer/src/generated/element.dart';
|
| import 'package:analyzer/src/generated/utilities_dart.dart';
|
|
|
| -final DYNAMIC = 'dynamic';
|
| -final DartType NO_RETURN_TYPE = new _NoReturnType();
|
| +const String DYNAMIC = 'dynamic';
|
|
|
| /**
|
| * Return a suggestion based upon the given element
|
| @@ -24,23 +23,36 @@ final DartType NO_RETURN_TYPE = new _NoReturnType();
|
| CompletionSuggestion createSuggestion(Element element,
|
| {CompletionSuggestionKind kind: CompletionSuggestionKind.INVOCATION,
|
| int relevance: COMPLETION_RELEVANCE_DEFAULT}) {
|
| - DartType type;
|
| +
|
| + String nameForType(DartType type) {
|
| + if (type == null) {
|
| + return DYNAMIC;
|
| + }
|
| + String name = type.displayName;
|
| + if (name == null || name.length <= 0) {
|
| + return DYNAMIC;
|
| + }
|
| + //TODO (danrubel) include type arguments ??
|
| + return name;
|
| + }
|
| +
|
| + String returnType = null;
|
| if (element is ExecutableElement) {
|
| if (element.isOperator) {
|
| + // Do not include operators in suggestions
|
| return null;
|
| }
|
| if (element is PropertyAccessorElement && element.isSetter) {
|
| - type = NO_RETURN_TYPE;
|
| + // no return type
|
| } else {
|
| - type = element.returnType;
|
| + returnType = nameForType(element.returnType);
|
| }
|
| } else if (element is VariableElement) {
|
| - type = element.type;
|
| + returnType = nameForType(element.type);
|
| } else if (element is FunctionTypeAliasElement) {
|
| - type = element.returnType;
|
| - } else {
|
| - type = NO_RETURN_TYPE;
|
| + returnType = nameForType(element.returnType);
|
| }
|
| +
|
| String completion = element.displayName;
|
| bool isDeprecated = element.isDeprecated;
|
| CompletionSuggestion suggestion = new CompletionSuggestion(
|
| @@ -58,7 +70,7 @@ CompletionSuggestion createSuggestion(Element element,
|
| suggestion.declaringType = enclosingElement.displayName;
|
| }
|
| }
|
| - suggestion.returnType = _nameForType(type);
|
| + suggestion.returnType = returnType;
|
| if (element is ExecutableElement && element is! PropertyAccessorElement) {
|
| suggestion.parameterNames = element.parameters.map(
|
| (ParameterElement parameter) => parameter.name).toList();
|
| @@ -153,24 +165,6 @@ void visitInheritedTypes(ClassDeclaration node, void
|
| }
|
|
|
| /**
|
| - * Return the name for the given type.
|
| - */
|
| -String _nameForType(DartType type) {
|
| - if (type == NO_RETURN_TYPE) {
|
| - return null;
|
| - }
|
| - if (type == null) {
|
| - return DYNAMIC;
|
| - }
|
| - String name = type.displayName;
|
| - if (name == null || name.length <= 0) {
|
| - return DYNAMIC;
|
| - }
|
| - //TODO (danrubel) include type arguments ??
|
| - return name;
|
| -}
|
| -
|
| -/**
|
| * This class visits elements in a class and provides suggestions based upon
|
| * the visible members in that class. Clients should call
|
| * [ClassElementSuggestionBuilder.suggestionsFor].
|
| @@ -413,53 +407,3 @@ abstract class SuggestionBuilder {
|
| */
|
| Future<bool> computeFull(AstNode node);
|
| }
|
| -
|
| -class _NoReturnType extends DartType {
|
| -
|
| - @override
|
| - String get displayName => name;
|
| -
|
| - @override
|
| - Element get element => null;
|
| -
|
| - @override
|
| - bool get isBottom => false;
|
| -
|
| - @override
|
| - bool get isDartCoreFunction => false;
|
| -
|
| - @override
|
| - bool get isDynamic => false;
|
| -
|
| - @override
|
| - bool get isObject => false;
|
| -
|
| - @override
|
| - bool get isUndefined => false;
|
| -
|
| - @override
|
| - bool get isVoid => false;
|
| -
|
| - @override
|
| - String get name => 'NoReturnType';
|
| -
|
| - @override
|
| - DartType getLeastUpperBound(DartType type) => this;
|
| -
|
| - @override
|
| - bool isAssignableTo(DartType type) => type is _NoReturnType;
|
| -
|
| - @override
|
| - bool isMoreSpecificThan(DartType type) => false;
|
| -
|
| - @override
|
| - bool isSubtypeOf(DartType type) => false;
|
| -
|
| - @override
|
| - bool isSupertypeOf(DartType type) => false;
|
| -
|
| - @override
|
| - DartType substitute2(List<DartType> argumentTypes,
|
| - List<DartType> parameterTypes) =>
|
| - this;
|
| -}
|
|
|