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); |
+ } |
+ } |
+ } |
} |
} |