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

Side by Side Diff: pkg/analysis_server/lib/src/services/completion/combinator_contributor.dart

Issue 1503463002: move combinator contributor to new task model (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: remove old code Created 5 years 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 library services.completion.contributor.dart.combinator;
6
7 import 'dart:async';
8
9 import 'package:analysis_server/src/protocol_server.dart'
10 hide Element, ElementKind;
11 import 'package:analysis_server/src/services/completion/dart_completion_manager. dart';
12 import 'package:analysis_server/src/services/completion/suggestion_builder.dart' ;
13 import 'package:analyzer/src/generated/ast.dart';
14 import 'package:analyzer/src/generated/element.dart';
15
16 /**
17 * A contributor for calculating `completion.getSuggestions` request results
18 * for the import combinators show and hide.
19 */
20 class CombinatorContributor extends DartCompletionContributor {
21 _CombinatorSuggestionBuilder builder;
22
23 @override
24 bool computeFast(DartCompletionRequest request) {
25 builder = request.target.containingNode
26 .accept(new _CombinatorAstVisitor(request));
27 return builder == null;
28 }
29
30 @override
31 Future<bool> computeFull(DartCompletionRequest request) {
32 if (builder != null) {
33 return builder.execute(request.target.containingNode);
34 }
35 return new Future.value(false);
36 }
37 }
38
39 /**
40 * A visitor for determining which imported classes and top level variables
41 * should be suggested and building those suggestions.
42 */
43 class _CombinatorAstVisitor
44 extends GeneralizingAstVisitor<_CombinatorSuggestionBuilder> {
45 final DartCompletionRequest request;
46
47 _CombinatorAstVisitor(this.request);
48
49 @override
50 _CombinatorSuggestionBuilder visitCombinator(Combinator node) {
51 return new _CombinatorSuggestionBuilder(
52 request, CompletionSuggestionKind.IDENTIFIER);
53 }
54
55 @override
56 _CombinatorSuggestionBuilder visitNode(AstNode node) {
57 return null;
58 }
59 }
60
61 /**
62 * A `_CombinatorSuggestionBuilder` determines which imported classes
63 * and top level variables should be suggested and builds those suggestions.
64 * This operation is instantiated during `computeFast`
65 * and calculates the suggestions during `computeFull`.
66 */
67 class _CombinatorSuggestionBuilder extends LibraryElementSuggestionBuilder {
68 _CombinatorSuggestionBuilder(
69 DartCompletionRequest request, CompletionSuggestionKind kind)
70 : super(request, kind, false, false);
71
72 Future<bool> execute(AstNode node) {
73 var directive = node.getAncestor((parent) => parent is NamespaceDirective);
74 if (directive is NamespaceDirective) {
75 LibraryElement library = directive.uriElement;
76 if (library != null) {
77 library.visitChildren(this);
78 }
79 }
80 return new Future.value(false);
81 }
82 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698