Chromium Code Reviews| Index: pkg/analysis_server/lib/src/services/completion/dart/inherited_reference_contributor.dart |
| diff --git a/pkg/analysis_server/lib/src/services/completion/dart/inherited_reference_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/inherited_reference_contributor.dart |
| index 9553dbaf7aa04f7a9664d529aa5d8e56cf5de4ab..31c316d7bd158838908c5e69b23467431bbe6697 100644 |
| --- a/pkg/analysis_server/lib/src/services/completion/dart/inherited_reference_contributor.dart |
| +++ b/pkg/analysis_server/lib/src/services/completion/dart/inherited_reference_contributor.dart |
| @@ -62,37 +62,55 @@ class InheritedReferenceContributor extends DartCompletionContributor |
| if (!request.includeIdentifiers) { |
| return EMPTY_LIST; |
| } |
| + |
| ClassDeclaration classDecl = _enclosingClass(request.target); |
| if (classDecl == null || classDecl.element == null) { |
| return EMPTY_LIST; |
| } |
| - |
| containingLibrary = request.libraryElement; |
| + return _computeSuggestionsForParentsOfClass(classDecl.element, request); |
| + } |
| + |
| + List<CompletionSuggestion> _computeSuggestionsForClass2( |
|
Brian Wilkerson
2016/12/09 17:15:19
As far as I can see, this is only invoked in one p
mfairhurst
2016/12/09 17:31:40
computeSuggestions should call this, but its in th
|
| + ClassElement classElement, DartCompletionRequest request, |
| + {bool skipChildClass: true}) { |
| bool isFunctionalArgument = request.target.isFunctionalArgument(); |
| kind = isFunctionalArgument |
| ? CompletionSuggestionKind.IDENTIFIER |
| : CompletionSuggestionKind.INVOCATION; |
| - OpType optype = (request as DartCompletionRequestImpl).opType; |
| + OpType optype = request.opType; |
| + |
| + if (!skipChildClass) { |
| + _addSuggestionsForType(classElement.type, optype, |
| + isFunctionalArgument: isFunctionalArgument); |
| + } |
| + |
| for (InterfaceType type in resolutionMap |
| .elementDeclaredByClassDeclaration(classDecl) |
| .allSupertypes) { |
| - if (!isFunctionalArgument) { |
| - for (PropertyAccessorElement elem in type.accessors) { |
| - if (elem.isGetter) { |
| - if (optype.includeReturnValueSuggestions) { |
| - addSuggestion(elem); |
| - } |
| - } else { |
| - if (optype.includeVoidReturnSuggestions) { |
| - addSuggestion(elem); |
| - } |
| - } |
| - } |
| - } |
| - for (MethodElement elem in type.methods) { |
| - if (elem.returnType == null) { |
| - addSuggestion(elem); |
| - } else if (!elem.returnType.isVoid) { |
| + _addSuggestionsForType(type, optype, |
| + isFunctionalArgument: isFunctionalArgument); |
| + } |
| + return suggestions; |
| + } |
| + |
| + List<CompletionSuggestion> computeSuggestionsForClass( |
| + ClassElement classElement, DartCompletionRequest request, |
| + {bool skipChildClass: true}) { |
| + if (!request.includeIdentifiers) { |
| + return EMPTY_LIST; |
| + } |
| + containingLibrary = request.libraryElement; |
| + |
| + return _computeSuggestionsForClass2(classElement, request, |
| + skipChildClass: skipChildClass); |
| + } |
| + |
| + _addSuggestionsForType(InterfaceType type, OpType optype, |
| + {bool isFunctionalArgument: false}) { |
| + if (!isFunctionalArgument) { |
| + for (PropertyAccessorElement elem in type.accessors) { |
| + if (elem.isGetter) { |
| if (optype.includeReturnValueSuggestions) { |
| addSuggestion(elem); |
| } |
| @@ -103,6 +121,18 @@ class InheritedReferenceContributor extends DartCompletionContributor |
| } |
| } |
| } |
| - return suggestions; |
| + for (MethodElement elem in type.methods) { |
| + if (elem.returnType == null) { |
| + addSuggestion(elem); |
| + } else if (!elem.returnType.isVoid) { |
| + if (optype.includeReturnValueSuggestions) { |
| + addSuggestion(elem); |
| + } |
| + } else { |
| + if (optype.includeVoidReturnSuggestions) { |
| + addSuggestion(elem); |
| + } |
| + } |
| + } |
| } |
| } |