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

Side by Side Diff: pkg/analysis_services/lib/completion/completion_suggestion.dart

Issue 484733003: Import analysis_services.dart into analysis_server.dart. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: 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
(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.suggestion;
6
7 import 'package:analysis_services/constants.dart';
8 import 'package:analysis_services/json.dart';
9 import 'package:analyzer/src/generated/element.dart';
10
11 /**
12 * An enumeration of the relevance of a completion suggestion.
13 */
14 class CompletionRelevance {
15 static const CompletionRelevance LOW = const CompletionRelevance('LOW');
16 static const CompletionRelevance DEFAULT =
17 const CompletionRelevance('DEFAULT');
18 static const CompletionRelevance HIGH = const CompletionRelevance('HIGH');
19
20 final String name;
21
22 const CompletionRelevance(this.name);
23
24 static CompletionRelevance value(String name) {
25 if (LOW.name == name) return LOW;
26 if (DEFAULT.name == name) return DEFAULT;
27 if (HIGH.name == name) return HIGH;
28 throw new ArgumentError('Unknown CompletionRelevance: $name');
29 }
30
31 toString() => 'CompletionRelevance.$name';
32 }
33
34 /**
35 * A single completion suggestion.
36 */
37 class CompletionSuggestion implements HasToJson {
38
39 /**
40 * The kind of element being suggested.
41 */
42 final CompletionSuggestionKind kind;
43
44 /**
45 * The relevance of this completion suggestion.
46 */
47 final CompletionRelevance relevance;
48
49 /**
50 * The identifier to be inserted if the suggestion is selected.
51 * If the suggestion is for a method or function, the client might want to
52 * additionally insert a template for the parameters.
53 * The information required in order to do so is contained in other fields.
54 */
55 final String completion;
56
57 /**
58 * The offset, relative to the beginning of the completion, of where
59 * the selection should be placed after insertion.
60 */
61 final int selectionOffset;
62
63 /**
64 * The number of characters that should be selected after insertion.
65 */
66 final int selectionLength;
67
68 /**
69 * `true` if the suggested element is deprecated.
70 */
71 final bool isDeprecated;
72
73 /**
74 * True if the element is not known to be valid for the target.
75 * This happens if the type of the target is dynamic.
76 */
77 final bool isPotential;
78
79 // optional fields
80
81 // final String docSummary;
82 // final String docComplete;
83 // final String declaringType;
84 // final String returnType;
85 // final List<String> parameterNames;
86 // final List<String> parameterTypes;
87 // final int requiredParameterCount;
88 // final int positionalParameterCount;
89 // final String parameterName;
90 // final String parameterType;
91
92 CompletionSuggestion(this.kind, this.relevance, this.completion,
93 this.selectionOffset, this.selectionLength, this.isDeprecated,
94 this.isPotential);
95
96 factory CompletionSuggestion.fromJson(Map<String, Object> json) {
97 return new CompletionSuggestion(
98 CompletionSuggestionKind.valueOf(json[KIND]),
99 CompletionRelevance.value(json[RELEVANCE]),
100 json[COMPLETION],
101 json[SELECTION_OFFSET],
102 json[SELECTION_LENGTH],
103 json[IS_DEPRECATED],
104 json[IS_POTENTIAL]);
105 }
106
107 @override
108 Map<String, Object> toJson() {
109 return {
110 KIND: kind.name,
111 RELEVANCE: relevance.name,
112 COMPLETION: completion,
113 SELECTION_OFFSET: selectionOffset,
114 SELECTION_LENGTH: selectionLength,
115 IS_DEPRECATED: isDeprecated,
116 IS_POTENTIAL: isPotential
117 };
118 }
119 }
120
121 /**
122 * An enumeration of the kinds of elements that can be included
123 * in a completion suggestion.
124 */
125 class CompletionSuggestionKind {
126 static const CompletionSuggestionKind ARGUMENT_LIST =
127 const CompletionSuggestionKind('ARGUMENT_LIST');
128 static const CompletionSuggestionKind CLASS =
129 const CompletionSuggestionKind('CLASS');
130 static const CompletionSuggestionKind CLASS_ALIAS =
131 const CompletionSuggestionKind('CLASS_ALIAS');
132 static const CompletionSuggestionKind CONSTRUCTOR =
133 const CompletionSuggestionKind('CONSTRUCTOR');
134 static const CompletionSuggestionKind FIELD =
135 const CompletionSuggestionKind('FIELD');
136 static const CompletionSuggestionKind FUNCTION =
137 const CompletionSuggestionKind('FUNCTION');
138 static const CompletionSuggestionKind FUNCTION_TYPE_ALIAS =
139 const CompletionSuggestionKind('FUNCTION_TYPE_ALIAS');
140 static const CompletionSuggestionKind GETTER =
141 const CompletionSuggestionKind('GETTER');
142 static const CompletionSuggestionKind IMPORT =
143 const CompletionSuggestionKind('IMPORT');
144 static const CompletionSuggestionKind KEYWORD =
145 const CompletionSuggestionKind('KEYWORD');
146 static const CompletionSuggestionKind LIBRARY_PREFIX =
147 const CompletionSuggestionKind('LIBRARY_PREFIX');
148 static const CompletionSuggestionKind LOCAL_VARIABLE =
149 const CompletionSuggestionKind('LOCAL_VARIABLE');
150 static const CompletionSuggestionKind METHOD =
151 const CompletionSuggestionKind('METHOD');
152 static const CompletionSuggestionKind METHOD_NAME =
153 const CompletionSuggestionKind('METHOD_NAME');
154 static const CompletionSuggestionKind NAMED_ARGUMENT =
155 const CompletionSuggestionKind('NAMED_ARGUMENT');
156 static const CompletionSuggestionKind OPTIONAL_ARGUMENT =
157 const CompletionSuggestionKind('OPTIONAL_ARGUMENT');
158 static const CompletionSuggestionKind PARAMETER =
159 const CompletionSuggestionKind('PARAMETER');
160 static const CompletionSuggestionKind SETTER =
161 const CompletionSuggestionKind('SETTER');
162 static const CompletionSuggestionKind TOP_LEVEL_VARIABLE =
163 const CompletionSuggestionKind('TOP_LEVEL_VARIABLE');
164 static const CompletionSuggestionKind TYPE_PARAMETER =
165 const CompletionSuggestionKind('TYPE_PARAMETER');
166
167 final String name;
168
169 const CompletionSuggestionKind(this.name);
170
171 @override
172 String toString() => name;
173
174 static CompletionSuggestionKind fromElementKind(ElementKind kind) {
175 // ElementKind.ANGULAR_FORMATTER,
176 // ElementKind.ANGULAR_COMPONENT,
177 // ElementKind.ANGULAR_CONTROLLER,
178 // ElementKind.ANGULAR_DIRECTIVE,
179 // ElementKind.ANGULAR_PROPERTY,
180 // ElementKind.ANGULAR_SCOPE_PROPERTY,
181 // ElementKind.ANGULAR_SELECTOR,
182 // ElementKind.ANGULAR_VIEW,
183 if (kind == ElementKind.CLASS) return CLASS;
184 // ElementKind.COMPILATION_UNIT,
185 if (kind == ElementKind.CONSTRUCTOR) return CONSTRUCTOR;
186 // ElementKind.DYNAMIC,
187 // ElementKind.EMBEDDED_HTML_SCRIPT,
188 // ElementKind.ERROR,
189 // ElementKind.EXPORT,
190 // ElementKind.EXTERNAL_HTML_SCRIPT,
191 if (kind == ElementKind.FIELD) return FIELD;
192 if (kind == ElementKind.FUNCTION) return FUNCTION;
193 if (kind == ElementKind.FUNCTION_TYPE_ALIAS) return FUNCTION_TYPE_ALIAS;
194 if (kind == ElementKind.GETTER) return GETTER;
195 // ElementKind.HTML,
196 if (kind == ElementKind.IMPORT) return IMPORT;
197 // ElementKind.LABEL,
198 // ElementKind.LIBRARY,
199 if (kind == ElementKind.LOCAL_VARIABLE) return LOCAL_VARIABLE;
200 if (kind == ElementKind.METHOD) return METHOD;
201 // ElementKind.NAME,
202 if (kind == ElementKind.PARAMETER) return PARAMETER;
203 // ElementKind.POLYMER_ATTRIBUTE,
204 // ElementKind.POLYMER_TAG_DART,
205 // ElementKind.POLYMER_TAG_HTML,
206 // ElementKind.PREFIX,
207 if (kind == ElementKind.SETTER) return SETTER;
208 if (kind == ElementKind.TOP_LEVEL_VARIABLE) return TOP_LEVEL_VARIABLE;
209 // ElementKind.TYPE_PARAMETER,
210 // ElementKind.UNIVERSE
211 throw new ArgumentError('Unknown CompletionSuggestionKind for: $kind');
212 }
213
214 static CompletionSuggestionKind valueOf(String name) {
215 if (ARGUMENT_LIST.name == name) return ARGUMENT_LIST;
216 if (CLASS.name == name) return CLASS;
217 if (CLASS_ALIAS.name == name) return CLASS_ALIAS;
218 if (CONSTRUCTOR.name == name) return CONSTRUCTOR;
219 if (FIELD.name == name) return FIELD;
220 if (FUNCTION.name == name) return FUNCTION;
221 if (FUNCTION_TYPE_ALIAS.name == name) return FUNCTION_TYPE_ALIAS;
222 if (GETTER.name == name) return GETTER;
223 if (IMPORT.name == name) return IMPORT;
224 if (KEYWORD.name == name) return KEYWORD;
225 if (LIBRARY_PREFIX.name == name) return LIBRARY_PREFIX;
226 if (LOCAL_VARIABLE.name == name) return LOCAL_VARIABLE;
227 if (METHOD.name == name) return METHOD;
228 if (METHOD_NAME.name == name) return METHOD_NAME;
229 if (NAMED_ARGUMENT.name == name) return NAMED_ARGUMENT;
230 if (OPTIONAL_ARGUMENT.name == name) return OPTIONAL_ARGUMENT;
231 if (PARAMETER.name == name) return PARAMETER;
232 if (SETTER.name == name) return SETTER;
233 if (TOP_LEVEL_VARIABLE.name == name) return TOP_LEVEL_VARIABLE;
234 if (TYPE_PARAMETER.name == name) return TYPE_PARAMETER;
235 throw new ArgumentError('Unknown CompletionSuggestionKind: $name');
236 }
237 }
OLDNEW
« no previous file with comments | « pkg/analysis_services/lib/completion/completion_manager.dart ('k') | pkg/analysis_services/lib/constants.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698