Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(801)

Unified Diff: pkg/analysis_server/lib/src/services/completion/combinator_computer.dart

Issue 694203002: move combinator suggestion ast traversal into computeFast (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analysis_server/lib/src/services/completion/combinator_computer.dart
diff --git a/pkg/analysis_server/lib/src/services/completion/combinator_computer.dart b/pkg/analysis_server/lib/src/services/completion/combinator_computer.dart
index d2ae88659133bdeff7f12253246e6c01dc06a8f1..3a4dca4a7e4625d6f8c2b5df5ae1a66874c0ea98 100644
--- a/pkg/analysis_server/lib/src/services/completion/combinator_computer.dart
+++ b/pkg/analysis_server/lib/src/services/completion/combinator_computer.dart
@@ -17,17 +17,21 @@ import 'package:analyzer/src/generated/element.dart';
* A computer for calculating `completion.getSuggestions` request results
* for the import combinators show and hide.
*/
-
class CombinatorComputer extends DartCompletionComputer {
+ _CombinatorSuggestionBuilder builder;
@override
bool computeFast(DartCompletionRequest request) {
- return false;
+ builder = request.node.accept(new _CombinatorAstVisitor(request));
+ return builder == null;
}
@override
Future<bool> computeFull(DartCompletionRequest request) {
- return request.node.accept(new _CombinatorAstVisitor(request));
+ if (builder != null) {
+ return builder.execute(request.node);
+ }
+ return new Future.value(false);
}
}
@@ -35,36 +39,50 @@ class CombinatorComputer extends DartCompletionComputer {
* A visitor for determining which imported classes and top level variables
* should be suggested and building those suggestions.
*/
-class _CombinatorAstVisitor extends GeneralizingAstVisitor<Future<bool>> {
+class _CombinatorAstVisitor extends
+ GeneralizingAstVisitor<_CombinatorSuggestionBuilder> {
final DartCompletionRequest request;
_CombinatorAstVisitor(this.request);
@override
- Future<bool> visitCombinator(Combinator node) {
- return _addCombinatorSuggestions(node);
+ _CombinatorSuggestionBuilder visitCombinator(Combinator node) {
+ return new _CombinatorSuggestionBuilder(
+ request,
+ CompletionSuggestionKind.IDENTIFIER);
}
@override
- Future<bool> visitNode(AstNode node) {
- return new Future.value(false);
+ _CombinatorSuggestionBuilder visitNode(AstNode node) {
+ return null;
}
@override
- Future<bool> visitSimpleIdentifier(SimpleIdentifier node) {
+ _CombinatorSuggestionBuilder visitSimpleIdentifier(SimpleIdentifier node) {
return node.parent.accept(this);
}
+}
- Future _addCombinatorSuggestions(Combinator node) {
+/**
+ * A `_CombinatorSuggestionBuilder` determines which imported classes
+ * and top level variables should be suggested and builds those suggestions.
+ * This operation is instantiated during `computeFast`
+ * and calculates the suggestions during `computeFull`.
+ */
+class _CombinatorSuggestionBuilder extends LibraryElementSuggestionBuilder {
+
+ _CombinatorSuggestionBuilder(DartCompletionRequest request,
+ CompletionSuggestionKind kind)
+ : super(request, kind);
+
+ Future<bool> execute(AstNode node) {
var directive = node.getAncestor((parent) => parent is NamespaceDirective);
if (directive is NamespaceDirective) {
LibraryElement library = directive.uriElement;
- LibraryElementSuggestionBuilder.suggestionsFor(
- request,
- CompletionSuggestionKind.IDENTIFIER,
- library);
- return new Future.value(true);
+ if (library != null) {
+ library.visitChildren(this);
+ }
}
return new Future.value(false);
}
-}
+}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698