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

Side by Side Diff: dart/site/try/poi/poi.dart

Issue 551383002: Add --enable-dart-mind option to poi.dart. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Update test to use new variable name. Created 6 years, 3 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
« no previous file with comments | « no previous file | dart/tests/try/poi/poi_test.dart » ('j') | dart/tests/try/poi/poi_test.dart » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 trydart.poi; 5 library trydart.poi;
6 6
7 import 'dart:async' show 7 import 'dart:async' show
8 Completer, 8 Completer,
9 Future, 9 Future,
10 Stream; 10 Stream;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 DartType; 57 DartType;
58 58
59 import 'package:compiler/implementation/scanner/scannerlib.dart' show 59 import 'package:compiler/implementation/scanner/scannerlib.dart' show
60 EOF_TOKEN, 60 EOF_TOKEN,
61 IDENTIFIER_TOKEN, 61 IDENTIFIER_TOKEN,
62 KEYWORD_TOKEN, 62 KEYWORD_TOKEN,
63 PartialClassElement, 63 PartialClassElement,
64 PartialElement, 64 PartialElement,
65 Token; 65 Token;
66 66
67 /// Controls if this program should be querying Dart Mind. Used by tests. 67 /// Enabled by the option --enable-dart-mind. Controls if this program should
68 bool enableDartMind = true; 68 /// be querying Dart Mind.
69 bool isDartMindEnabled = false;
69 70
70 /// Iterator over lines from standard input (or the argument array). 71 /// Iterator over lines from standard input (or the argument array).
71 Iterator<String> stdin; 72 Iterator<String> stdin;
72 73
73 /// Enabled by the option --simulate-mutation. When true, this program will 74 /// Enabled by the option --simulate-mutation. When true, this program will
74 /// only prompt for one file name, and subsequent runs will read 75 /// only prompt for one file name, and subsequent runs will read
75 /// FILENAME.N.dart, where N starts at 1, and is increased on each iteration. 76 /// FILENAME.N.dart, where N starts at 1, and is increased on each iteration.
76 /// For example, if the program is invoked as: 77 /// For example, if the program is invoked as:
77 /// 78 ///
78 /// dart poi.dart --simulate-mutation test.dart 11 22 33 44 79 /// dart poi.dart --simulate-mutation test.dart 11 22 33 44
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 115
115 main(List<String> arguments) { 116 main(List<String> arguments) {
116 poiCount = 0; 117 poiCount = 0;
117 List<String> nonOptionArguments = []; 118 List<String> nonOptionArguments = [];
118 for (String argument in arguments) { 119 for (String argument in arguments) {
119 if (argument.startsWith('-')) { 120 if (argument.startsWith('-')) {
120 switch (argument) { 121 switch (argument) {
121 case '--simulate-mutation': 122 case '--simulate-mutation':
122 isSimulateMutationEnabled = true; 123 isSimulateMutationEnabled = true;
123 break; 124 break;
125 case '--enable-dart-mind':
126 isDartMindEnabled = true;
127 break;
124 case '-v': 128 case '-v':
125 case '--verbose': 129 case '--verbose':
126 isVerbose = true; 130 isVerbose = true;
127 break; 131 break;
128 default: 132 default:
129 throw 'Unknown option: $argument.'; 133 throw 'Unknown option: $argument.';
130 } 134 }
131 } else { 135 } else {
132 nonOptionArguments.add(argument); 136 nonOptionArguments.add(argument);
133 } 137 }
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 stdout.write(message); 199 stdout.write(message);
196 } 200 }
197 return stdout.flush().then((_) { 201 return stdout.flush().then((_) {
198 stdin.moveNext(); 202 stdin.moveNext();
199 return stdin.current; 203 return stdin.current;
200 }); 204 });
201 } 205 }
202 206
203 Future queryDartMind(String prefix, String info) { 207 Future queryDartMind(String prefix, String info) {
204 // TODO(lukechurch): Use [info] for something. 208 // TODO(lukechurch): Use [info] for something.
205 if (!enableDartMind) return new Future.value("[]");
206 String encodedArg0 = Uri.encodeComponent('"$prefix"'); 209 String encodedArg0 = Uri.encodeComponent('"$prefix"');
207 String mindQuery = 210 String mindQuery =
208 'http://dart-mind.appspot.com/rpc' 211 'http://dart-mind.appspot.com/rpc'
209 '?action=GetExportingPubCompletions' 212 '?action=GetExportingPubCompletions'
210 '&arg0=$encodedArg0'; 213 '&arg0=$encodedArg0';
211 Uri uri = Uri.parse(mindQuery); 214 Uri uri = Uri.parse(mindQuery);
212 215
213 HttpClient client = new HttpClient(); 216 HttpClient client = new HttpClient();
214 return client.getUrl(uri).then((HttpClientRequest request) { 217 return client.getUrl(uri).then((HttpClientRequest request) {
215 return request.close(); 218 return request.close();
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 String prefix; 269 String prefix;
267 if (token != null) { 270 if (token != null) {
268 if (token.charOffset + token.charCount <= position) { 271 if (token.charOffset + token.charCount <= position) {
269 // After the token; in whitespace, or in the beginning of another token. 272 // After the token; in whitespace, or in the beginning of another token.
270 prefix = ""; 273 prefix = "";
271 } else if (token.kind == IDENTIFIER_TOKEN || 274 } else if (token.kind == IDENTIFIER_TOKEN ||
272 token.kind == KEYWORD_TOKEN) { 275 token.kind == KEYWORD_TOKEN) {
273 prefix = token.value.substring(0, position - token.charOffset); 276 prefix = token.value.substring(0, position - token.charOffset);
274 } 277 }
275 } 278 }
279 sw.stop();
276 printVerbose('Find token took ${sw.elapsedMicroseconds}us.'); 280 printVerbose('Find token took ${sw.elapsedMicroseconds}us.');
277 sw.reset(); 281 if (isDartMindEnabled && prefix != null) {
278 if (prefix != null) { 282 sw..reset()..start();
279 return queryDartMind(prefix, info).then((String dartMindSuggestion) { 283 return queryDartMind(prefix, info).then((String dartMindSuggestion) {
280 sw.stop(); 284 sw.stop();
281 print('Dart Mind ($prefix): $dartMindSuggestion.'); 285 print('Dart Mind ($prefix): $dartMindSuggestion.');
282 printVerbose('Dart Mind took ${sw.elapsedMicroseconds}us.'); 286 printVerbose('Dart Mind took ${sw.elapsedMicroseconds}us.');
283 return repeat(); 287 return repeat();
284 }); 288 });
285 } else { 289 } else {
286 print("Didn't talk to Dart Mind, no identifier at POI ($token)."); 290 if (isDartMindEnabled) {
291 print("Didn't talk to Dart Mind, no identifier at POI ($token).");
292 }
287 return repeat(); 293 return repeat();
288 } 294 }
289 }); 295 });
290 } 296 }
291 297
292 /// Find the token corresponding to [position] in [element]. The method only 298 /// Find the token corresponding to [position] in [element]. The method only
293 /// works for instances of [PartialElement] or [LibraryElement]. Support for 299 /// works for instances of [PartialElement] or [LibraryElement]. Support for
294 /// [LibraryElement] is currently limited, and works only for named libraries. 300 /// [LibraryElement] is currently limited, and works only for named libraries.
295 Token findToken(Element element, int position) { 301 Token findToken(Element element, int position) {
296 Token beginToken; 302 Token beginToken;
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 buffer.write('\n'); 666 buffer.write('\n');
661 indented.write('}'); 667 indented.write('}');
662 } 668 }
663 } 669 }
664 670
665 modelx.ScopeX localScope(modelx.LibraryElementX element) => element.localScope; 671 modelx.ScopeX localScope(modelx.LibraryElementX element) => element.localScope;
666 672
667 modelx.ImportScope importScope(modelx.LibraryElementX element) { 673 modelx.ImportScope importScope(modelx.LibraryElementX element) {
668 return element.importScope; 674 return element.importScope;
669 } 675 }
OLDNEW
« no previous file with comments | « no previous file | dart/tests/try/poi/poi_test.dart » ('j') | dart/tests/try/poi/poi_test.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698