Index: pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart |
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 d9778a5698eb90c6572d8ad9ceb1ea4c3f5ba63a..7687117b36d54a71dbf15007a4ea95185733ee6e 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 |
@@ -256,6 +256,13 @@ class _LocalVisitor extends LocalDeclarationVisitor { |
_addLocalSuggestion_includeTypeNameSuggestions( |
declaration.name, NO_RETURN_TYPE, protocol.ElementKind.ENUM, |
isDeprecated: _isDeprecated(declaration)); |
+ for (EnumConstantDeclaration enumConstant in declaration.constants) { |
+ if (!enumConstant.isSynthetic) { |
+ _addLocalSuggestion_includeReturnValueSuggestions_enumConstant( |
+ enumConstant, declaration, |
+ isDeprecated: _isDeprecated(declaration)); |
+ } |
+ } |
} |
} |
@@ -419,6 +426,42 @@ class _LocalVisitor extends LocalDeclarationVisitor { |
} |
} |
+ void _addLocalSuggestion_enumConstant( |
+ EnumConstantDeclaration constantDeclaration, |
+ EnumDeclaration enumDeclaration, |
+ {bool isAbstract: false, |
+ bool isDeprecated: false, |
+ ClassDeclaration classDecl, |
+ int relevance: DART_RELEVANCE_DEFAULT}) { |
+ String completion = |
+ '${enumDeclaration.name.name}.${constantDeclaration.name.name}'; |
+ CompletionSuggestion suggestion = new CompletionSuggestion( |
+ CompletionSuggestionKind.INVOCATION, |
+ isDeprecated ? DART_RELEVANCE_LOW : relevance, |
+ completion, |
+ completion.length, |
+ 0, |
+ isDeprecated, |
+ false, |
+ returnType: enumDeclaration.name.name); |
+ |
+ suggestionMap.putIfAbsent(suggestion.completion, () => suggestion); |
+ int flags = protocol.Element.makeFlags( |
+ isAbstract: isAbstract, |
+ isDeprecated: isDeprecated, |
+ isPrivate: Identifier.isPrivateName(constantDeclaration.name.name)); |
+ suggestion.element = new protocol.Element( |
+ protocol.ElementKind.ENUM_CONSTANT, |
+ constantDeclaration.name.name, |
+ flags, |
+ location: new Location( |
+ request.source.fullName, |
+ constantDeclaration.name.offset, |
+ constantDeclaration.name.length, |
+ 0, |
+ 0)); |
+ } |
+ |
void _addLocalSuggestion_includeReturnValueSuggestions( |
SimpleIdentifier id, TypeName typeName, protocol.ElementKind elemKind, |
{bool isAbstract: false, |
@@ -438,6 +481,22 @@ class _LocalVisitor extends LocalDeclarationVisitor { |
} |
} |
+ void _addLocalSuggestion_includeReturnValueSuggestions_enumConstant( |
+ EnumConstantDeclaration constantDeclaration, |
+ EnumDeclaration enumDeclaration, |
+ {bool isAbstract: false, |
+ bool isDeprecated: false, |
+ int relevance: DART_RELEVANCE_DEFAULT}) { |
+ relevance = optype.returnValueSuggestionsFilter( |
+ enumDeclaration.element.type, relevance); |
+ if (relevance != null) { |
+ _addLocalSuggestion_enumConstant(constantDeclaration, enumDeclaration, |
+ isAbstract: isAbstract, |
+ isDeprecated: isDeprecated, |
+ relevance: relevance); |
+ } |
+ } |
+ |
void _addLocalSuggestion_includeTypeNameSuggestions( |
SimpleIdentifier id, TypeName typeName, protocol.ElementKind elemKind, |
{bool isAbstract: false, |