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'; |
11 import 'package:analysis_server/src/provisional/completion/completion_core.dart' | 11 import 'package:analysis_server/src/provisional/completion/completion_core.dart' |
12 show AnalysisRequest, CompletionRequest; | 12 show AnalysisRequest, CompletionRequest; |
13 import 'package:analysis_server/src/provisional/completion/completion_dart.dart' | |
14 as newApi; | |
15 import 'package:analysis_server/src/provisional/completion/dart/completion_targe
t.dart'; | 13 import 'package:analysis_server/src/provisional/completion/dart/completion_targe
t.dart'; |
16 import 'package:analysis_server/src/services/completion/arglist_contributor.dart
'; | 14 import 'package:analysis_server/src/services/completion/arglist_contributor.dart
'; |
17 import 'package:analysis_server/src/services/completion/combinator_contributor.d
art'; | 15 import 'package:analysis_server/src/services/completion/combinator_contributor.d
art'; |
18 import 'package:analysis_server/src/services/completion/common_usage_computer.da
rt'; | 16 import 'package:analysis_server/src/services/completion/common_usage_computer.da
rt'; |
19 import 'package:analysis_server/src/services/completion/completion_manager.dart'
; | 17 import 'package:analysis_server/src/services/completion/completion_manager.dart'
; |
20 import 'package:analysis_server/src/services/completion/contribution_sorter.dart
'; | 18 import 'package:analysis_server/src/services/completion/contribution_sorter.dart
'; |
21 import 'package:analysis_server/src/services/completion/dart_completion_cache.da
rt'; | 19 import 'package:analysis_server/src/services/completion/dart_completion_cache.da
rt'; |
22 import 'package:analysis_server/src/services/completion/imported_reference_contr
ibutor.dart'; | 20 import 'package:analysis_server/src/services/completion/imported_reference_contr
ibutor.dart'; |
23 import 'package:analysis_server/src/services/completion/keyword_contributor.dart
'; | 21 import 'package:analysis_server/src/services/completion/keyword_contributor.dart
'; |
24 import 'package:analysis_server/src/services/completion/local_reference_contribu
tor.dart'; | 22 import 'package:analysis_server/src/services/completion/local_reference_contribu
tor.dart'; |
25 import 'package:analysis_server/src/services/completion/optype.dart'; | 23 import 'package:analysis_server/src/services/completion/optype.dart'; |
26 import 'package:analysis_server/src/services/completion/prefixed_element_contrib
utor.dart'; | 24 import 'package:analysis_server/src/services/completion/prefixed_element_contrib
utor.dart'; |
27 import 'package:analysis_server/src/services/completion/uri_contributor.dart'; | 25 import 'package:analysis_server/src/services/completion/uri_contributor.dart'; |
28 import 'package:analysis_server/src/services/search/search_engine.dart'; | 26 import 'package:analysis_server/src/services/search/search_engine.dart'; |
29 import 'package:analyzer/file_system/file_system.dart'; | |
30 import 'package:analyzer/src/cancelable_future.dart'; | |
31 import 'package:analyzer/src/context/context.dart' | 27 import 'package:analyzer/src/context/context.dart' |
32 show AnalysisFutureHelper, AnalysisContextImpl; | 28 show AnalysisFutureHelper, AnalysisContextImpl; |
33 import 'package:analyzer/src/generated/ast.dart'; | 29 import 'package:analyzer/src/generated/ast.dart'; |
34 import 'package:analyzer/src/generated/engine.dart' hide AnalysisContextImpl; | 30 import 'package:analyzer/src/generated/engine.dart' hide AnalysisContextImpl; |
35 import 'package:analyzer/src/generated/scanner.dart'; | 31 import 'package:analyzer/src/generated/scanner.dart'; |
36 import 'package:analyzer/src/generated/source.dart'; | 32 import 'package:analyzer/src/generated/source.dart'; |
37 import 'package:analyzer/task/model.dart'; | |
38 | 33 |
39 const int DART_RELEVANCE_COMMON_USAGE = 1200; | 34 const int DART_RELEVANCE_COMMON_USAGE = 1200; |
40 const int DART_RELEVANCE_DEFAULT = 1000; | 35 const int DART_RELEVANCE_DEFAULT = 1000; |
41 const int DART_RELEVANCE_HIGH = 2000; | 36 const int DART_RELEVANCE_HIGH = 2000; |
42 const int DART_RELEVANCE_INHERITED_ACCESSOR = 1057; | 37 const int DART_RELEVANCE_INHERITED_ACCESSOR = 1057; |
43 const int DART_RELEVANCE_INHERITED_FIELD = 1058; | 38 const int DART_RELEVANCE_INHERITED_FIELD = 1058; |
44 const int DART_RELEVANCE_INHERITED_METHOD = 1057; | 39 const int DART_RELEVANCE_INHERITED_METHOD = 1057; |
45 const int DART_RELEVANCE_KEYWORD = 1055; | 40 const int DART_RELEVANCE_KEYWORD = 1055; |
46 const int DART_RELEVANCE_LOCAL_ACCESSOR = 1057; | 41 const int DART_RELEVANCE_LOCAL_ACCESSOR = 1057; |
47 const int DART_RELEVANCE_LOCAL_FIELD = 1058; | 42 const int DART_RELEVANCE_LOCAL_FIELD = 1058; |
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
452 parameterNames: suggestion.parameterNames, | 447 parameterNames: suggestion.parameterNames, |
453 parameterTypes: suggestion.parameterTypes, | 448 parameterTypes: suggestion.parameterTypes, |
454 requiredParameterCount: suggestion.requiredParameterCount, | 449 requiredParameterCount: suggestion.requiredParameterCount, |
455 hasNamedParameters: suggestion.hasNamedParameters, | 450 hasNamedParameters: suggestion.hasNamedParameters, |
456 returnType: suggestion.returnType, | 451 returnType: suggestion.returnType, |
457 element: suggestion.element); | 452 element: suggestion.element); |
458 } | 453 } |
459 } | 454 } |
460 } | 455 } |
461 } | 456 } |
462 | |
463 /** | |
464 * A wrapper around a new dart completion contributor that makes it usable where | |
465 * an old dart completion contributor is expected. | |
466 */ | |
467 class NewCompletionWrapper implements DartCompletionContributor { | |
468 /** | |
469 * The new-style contributor that is being wrapped. | |
470 */ | |
471 final newApi.DartCompletionContributor contributor; | |
472 | |
473 /** | |
474 * Initialize a newly created wrapper for the given [contributor]. | |
475 */ | |
476 NewCompletionWrapper(this.contributor); | |
477 | |
478 @override | |
479 bool computeFast(DartCompletionRequest request) { | |
480 List<CompletionSuggestion> suggestions = | |
481 contributor.computeSuggestions(new OldRequestWrapper(request)); | |
482 if (suggestions == null) { | |
483 return false; | |
484 } | |
485 for (CompletionSuggestion suggestion in suggestions) { | |
486 request.addSuggestion(suggestion); | |
487 } | |
488 return true; | |
489 } | |
490 | |
491 @override | |
492 Future<bool> computeFull(DartCompletionRequest request) async { | |
493 List<CompletionSuggestion> suggestions = | |
494 contributor.computeSuggestions(new OldRequestWrapper(request)); | |
495 if (suggestions != null) { | |
496 for (CompletionSuggestion suggestion in suggestions) { | |
497 request.addSuggestion(suggestion); | |
498 } | |
499 return true; | |
500 } | |
501 return false; | |
502 } | |
503 | |
504 @override | |
505 String toString() => 'wrapped $contributor'; | |
506 } | |
507 | |
508 /** | |
509 * A wrapper around an old dart completion request that makes it usable where a | |
510 * new dart completion request is expected. | |
511 */ | |
512 class OldRequestWrapper implements newApi.DartCompletionRequest { | |
513 final DartCompletionRequest request; | |
514 | |
515 OldRequestWrapper(this.request); | |
516 | |
517 @override | |
518 AnalysisContext get context => request.context; | |
519 | |
520 @override | |
521 bool get isResolved => request.unit.element != null; | |
522 | |
523 @override | |
524 int get offset => request.offset; | |
525 | |
526 @override | |
527 ResourceProvider get resourceProvider => request.resourceProvider; | |
528 | |
529 @override | |
530 Source get source => request.source; | |
531 | |
532 @override | |
533 CompletionTarget get target => request.target; | |
534 | |
535 @override | |
536 CompilationUnit get unit => request.unit; | |
537 | |
538 @override | |
539 String toString() => 'wrapped $request'; | |
540 } | |
OLD | NEW |