OLD | NEW |
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.dart; | 5 library services.completion.dart; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 | 8 |
9 import 'package:analysis_server/plugin/protocol/protocol.dart'; | 9 import 'package:analysis_server/plugin/protocol/protocol.dart'; |
10 import 'package:analysis_server/src/analysis_server.dart'; | 10 import 'package:analysis_server/src/analysis_server.dart'; |
(...skipping 13 matching lines...) Expand all Loading... |
24 import 'package:analysis_server/src/services/completion/local_reference_contribu
tor.dart'; | 24 import 'package:analysis_server/src/services/completion/local_reference_contribu
tor.dart'; |
25 import 'package:analysis_server/src/services/completion/optype.dart'; | 25 import 'package:analysis_server/src/services/completion/optype.dart'; |
26 import 'package:analysis_server/src/services/completion/prefixed_element_contrib
utor.dart'; | 26 import 'package:analysis_server/src/services/completion/prefixed_element_contrib
utor.dart'; |
27 import 'package:analysis_server/src/services/completion/uri_contributor.dart'; | 27 import 'package:analysis_server/src/services/completion/uri_contributor.dart'; |
28 import 'package:analysis_server/src/services/search/search_engine.dart'; | 28 import 'package:analysis_server/src/services/search/search_engine.dart'; |
29 import 'package:analyzer/file_system/file_system.dart'; | 29 import 'package:analyzer/file_system/file_system.dart'; |
30 import 'package:analyzer/src/generated/ast.dart'; | 30 import 'package:analyzer/src/generated/ast.dart'; |
31 import 'package:analyzer/src/generated/engine.dart'; | 31 import 'package:analyzer/src/generated/engine.dart'; |
32 import 'package:analyzer/src/generated/scanner.dart'; | 32 import 'package:analyzer/src/generated/scanner.dart'; |
33 import 'package:analyzer/src/generated/source.dart'; | 33 import 'package:analyzer/src/generated/source.dart'; |
| 34 import 'package:analyzer/task/model.dart'; |
34 | 35 |
35 const int DART_RELEVANCE_COMMON_USAGE = 1200; | 36 const int DART_RELEVANCE_COMMON_USAGE = 1200; |
36 const int DART_RELEVANCE_DEFAULT = 1000; | 37 const int DART_RELEVANCE_DEFAULT = 1000; |
37 const int DART_RELEVANCE_HIGH = 2000; | 38 const int DART_RELEVANCE_HIGH = 2000; |
38 const int DART_RELEVANCE_INHERITED_ACCESSOR = 1057; | 39 const int DART_RELEVANCE_INHERITED_ACCESSOR = 1057; |
39 const int DART_RELEVANCE_INHERITED_FIELD = 1058; | 40 const int DART_RELEVANCE_INHERITED_FIELD = 1058; |
40 const int DART_RELEVANCE_INHERITED_METHOD = 1057; | 41 const int DART_RELEVANCE_INHERITED_METHOD = 1057; |
41 const int DART_RELEVANCE_KEYWORD = 1055; | 42 const int DART_RELEVANCE_KEYWORD = 1055; |
42 const int DART_RELEVANCE_LOCAL_ACCESSOR = 1057; | 43 const int DART_RELEVANCE_LOCAL_ACCESSOR = 1057; |
43 const int DART_RELEVANCE_LOCAL_FIELD = 1058; | 44 const int DART_RELEVANCE_LOCAL_FIELD = 1058; |
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
413 requiredParameterCount: suggestion.requiredParameterCount, | 414 requiredParameterCount: suggestion.requiredParameterCount, |
414 hasNamedParameters: suggestion.hasNamedParameters, | 415 hasNamedParameters: suggestion.hasNamedParameters, |
415 returnType: suggestion.returnType, | 416 returnType: suggestion.returnType, |
416 element: suggestion.element); | 417 element: suggestion.element); |
417 } | 418 } |
418 } | 419 } |
419 } | 420 } |
420 } | 421 } |
421 | 422 |
422 /** | 423 /** |
423 * A wrapper around a new dart completion contributor that makes it usable where | |
424 * an old dart completion contributor is expected. | |
425 */ | |
426 class NewCompletionWrapper implements DartCompletionContributor { | |
427 /** | |
428 * The new-style contributor that is being wrapped. | |
429 */ | |
430 final newApi.DartCompletionContributor contributor; | |
431 | |
432 /** | |
433 * Initialize a newly created wrapper for the given [contributor]. | |
434 */ | |
435 NewCompletionWrapper(this.contributor); | |
436 | |
437 @override | |
438 bool computeFast(DartCompletionRequest request) { | |
439 List<CompletionSuggestion> suggestions = | |
440 contributor.computeSuggestions(new OldRequestWrapper(request)); | |
441 if (suggestions == null) { | |
442 return false; | |
443 } | |
444 for (CompletionSuggestion suggestion in suggestions) { | |
445 request.addSuggestion(suggestion); | |
446 } | |
447 return true; | |
448 } | |
449 | |
450 @override | |
451 Future<bool> computeFull(DartCompletionRequest request) async { | |
452 List<CompletionSuggestion> suggestions = | |
453 contributor.computeSuggestions(new OldRequestWrapper(request)); | |
454 if (suggestions != null) { | |
455 for (CompletionSuggestion suggestion in suggestions) { | |
456 request.addSuggestion(suggestion); | |
457 } | |
458 return true; | |
459 } | |
460 return false; | |
461 } | |
462 | |
463 @override | |
464 String toString() => 'wrapped $contributor'; | |
465 } | |
466 | |
467 /** | |
468 * A wrapper around an old dart completion request that makes it usable where a | 424 * A wrapper around an old dart completion request that makes it usable where a |
469 * new dart completion request is expected. | 425 * new dart completion request is expected. |
470 */ | 426 */ |
471 class OldRequestWrapper implements newApi.DartCompletionRequest { | 427 class OldRequestWrapper implements newApi.DartCompletionRequest { |
472 final DartCompletionRequest request; | 428 final DartCompletionRequest request; |
473 | 429 |
474 OldRequestWrapper(this.request); | 430 OldRequestWrapper(this.request); |
475 | 431 |
476 @override | 432 @override |
477 AnalysisContext get context => request.context; | 433 AnalysisContext get context => request.context; |
478 | 434 |
479 @override | 435 @override |
480 bool get isResolved => request.unit.element != null; | |
481 | |
482 @override | |
483 int get offset => request.offset; | 436 int get offset => request.offset; |
484 | 437 |
485 @override | 438 @override |
| 439 CompilationUnit get unit => request.unit; |
| 440 |
| 441 @override |
486 ResourceProvider get resourceProvider => request.resourceProvider; | 442 ResourceProvider get resourceProvider => request.resourceProvider; |
487 | 443 |
488 @override | 444 @override |
489 Source get source => request.source; | 445 Source get source => request.source; |
490 | 446 |
491 @override | 447 @override |
492 CompletionTarget get target => request.target; | 448 CompletionTarget get target => request.target; |
493 | 449 |
494 @override | 450 @override |
495 CompilationUnit get unit => request.unit; | 451 String toString() => 'wrapped $request'; |
496 | 452 |
497 @override | 453 @override |
498 String toString() => 'wrapped $request'; | 454 CompletionTarget get parsedTarget => request.target; |
| 455 |
| 456 @override |
| 457 Future<CompletionTarget> get resolvedDeclarationTarget { |
| 458 throw 'not implemented yet'; |
| 459 } |
499 } | 460 } |
OLD | NEW |