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

Side by Side Diff: pkg/analysis_services/lib/src/completion/keyword_computer.dart

Issue 467233003: refactor and cleanup code completion (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: merge Created 6 years, 4 months 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 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 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library services.completion.computer.dart.keyword; 5 library services.completion.computer.dart.keyword;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_services/completion/completion_computer.dart';
10 import 'package:analysis_services/completion/completion_suggestion.dart'; 9 import 'package:analysis_services/completion/completion_suggestion.dart';
10 import 'package:analysis_services/src/completion/dart_completion_manager.dart';
11 import 'package:analyzer/src/generated/ast.dart'; 11 import 'package:analyzer/src/generated/ast.dart';
12 import 'package:analyzer/src/generated/scanner.dart'; 12 import 'package:analyzer/src/generated/scanner.dart';
13 13
14 /** 14 /**
15 * A computer for calculating `completion.getSuggestions` request results 15 * A computer for calculating `completion.getSuggestions` request results
16 * for the local library in which the completion is requested. 16 * for the local library in which the completion is requested.
17 */ 17 */
18 class KeywordComputer extends CompletionComputer { 18 class KeywordComputer extends DartCompletionComputer {
19 19
20 @override 20 @override
21 bool computeFast(CompilationUnit unit, AstNode node, 21 bool computeFast(DartCompletionRequest request) {
22 List<CompletionSuggestion> suggestions) { 22 request.node.accept(new _KeywordVisitor(request));
23 node.accept(new _KeywordVisitor(suggestions));
24 return true; 23 return true;
25 } 24 }
26 25
27 @override 26 @override
28 Future<bool> computeFull(CompilationUnit unit, AstNode node, 27 Future<bool> computeFull(DartCompletionRequest request) {
29 List<CompletionSuggestion> suggestions) {
30 return new Future.value(false); 28 return new Future.value(false);
31 } 29 }
32 } 30 }
33 31
34 /** 32 /**
35 * A vistor for generating keyword suggestions. 33 * A vistor for generating keyword suggestions.
36 */ 34 */
37 class _KeywordVisitor extends GeneralizingAstVisitor { 35 class _KeywordVisitor extends GeneralizingAstVisitor {
38 final List<CompletionSuggestion> suggestions; 36 final DartCompletionRequest request;
39 37
40 _KeywordVisitor(this.suggestions); 38 _KeywordVisitor(this.request);
41 39
40 @override
41 visitClassDeclaration(ClassDeclaration node) {
42 _addSuggestions([Keyword.EXTENDS, Keyword.IMPLEMENTS, Keyword.WITH]);
43 }
44
45 @override
42 visitCompilationUnit(CompilationUnit node) { 46 visitCompilationUnit(CompilationUnit node) {
43 _addSuggestions( 47 _addSuggestions(
44 [ 48 [
45 Keyword.ABSTRACT, 49 Keyword.ABSTRACT,
46 Keyword.CLASS, 50 Keyword.CLASS,
47 Keyword.CONST, 51 Keyword.CONST,
48 Keyword.EXPORT, 52 Keyword.EXPORT,
49 Keyword.FINAL, 53 Keyword.FINAL,
50 Keyword.IMPORT, 54 Keyword.IMPORT,
51 Keyword.LIBRARY, 55 Keyword.LIBRARY,
52 Keyword.PART, 56 Keyword.PART,
53 Keyword.TYPEDEF, 57 Keyword.TYPEDEF,
54 Keyword.VAR]); 58 Keyword.VAR]);
55 } 59 }
56 60
57 visitClassDeclaration(ClassDeclaration node) { 61 @override
58 _addSuggestions([Keyword.EXTENDS, Keyword.IMPLEMENTS, Keyword.WITH]); 62 visitNode(AstNode node) {
63 // ignored
59 } 64 }
60 65
61 void _addSuggestions(List<Keyword> keywords) { 66 void _addSuggestions(List<Keyword> keywords) {
62 keywords.forEach((Keyword keyword) { 67 keywords.forEach((Keyword keyword) {
63 String completion = keyword.syntax; 68 String completion = keyword.syntax;
64 suggestions.add( 69 request.suggestions.add(
65 new CompletionSuggestion( 70 new CompletionSuggestion(
66 CompletionSuggestionKind.KEYWORD, 71 CompletionSuggestionKind.KEYWORD,
67 CompletionRelevance.DEFAULT, 72 CompletionRelevance.DEFAULT,
68 completion, 73 completion,
69 completion.length, 74 completion.length,
70 0, 75 0,
71 false, 76 false,
72 false)); 77 false));
73 }); 78 });
74 } 79 }
75
76 visitNode(AstNode node) {}
77 } 80 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698