Chromium Code Reviews| 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/completion/completion_core.dart' | 9 import 'package:analysis_server/completion/completion_core.dart' |
| 10 show CompletionRequest; | 10 show CompletionRequest; |
| 11 import 'package:analysis_server/completion/completion_dart.dart' as newApi; | |
| 11 import 'package:analysis_server/src/analysis_server.dart'; | 12 import 'package:analysis_server/src/analysis_server.dart'; |
| 12 import 'package:analysis_server/src/protocol.dart'; | 13 import 'package:analysis_server/src/protocol.dart'; |
| 13 import 'package:analysis_server/src/services/completion/arglist_contributor.dart '; | 14 import 'package:analysis_server/src/services/completion/arglist_contributor.dart '; |
| 14 import 'package:analysis_server/src/services/completion/combinator_contributor.d art'; | 15 import 'package:analysis_server/src/services/completion/combinator_contributor.d art'; |
| 15 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'; |
| 16 import 'package:analysis_server/src/services/completion/completion_manager.dart' ; | 17 import 'package:analysis_server/src/services/completion/completion_manager.dart' ; |
| 17 import 'package:analysis_server/src/services/completion/completion_target.dart'; | 18 import 'package:analysis_server/src/services/completion/completion_target.dart'; |
| 18 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'; |
| 19 import 'package:analysis_server/src/services/completion/uri_contributor.dart'; | |
| 20 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'; |
| 21 import 'package:analysis_server/src/services/completion/inherited_computer.dart' ; | |
| 21 import 'package:analysis_server/src/services/completion/keyword_contributor.dart '; | 22 import 'package:analysis_server/src/services/completion/keyword_contributor.dart '; |
| 22 import 'package:analysis_server/src/services/completion/local_reference_contribu tor.dart'; | 23 import 'package:analysis_server/src/services/completion/local_reference_contribu tor.dart'; |
| 23 import 'package:analysis_server/src/services/completion/optype.dart'; | 24 import 'package:analysis_server/src/services/completion/optype.dart'; |
| 24 import 'package:analysis_server/src/services/completion/prefixed_element_contrib utor.dart'; | 25 import 'package:analysis_server/src/services/completion/prefixed_element_contrib utor.dart'; |
| 26 import 'package:analysis_server/src/services/completion/uri_contributor.dart'; | |
| 25 import 'package:analysis_server/src/services/search/search_engine.dart'; | 27 import 'package:analysis_server/src/services/search/search_engine.dart'; |
| 28 import 'package:analyzer/file_system/file_system.dart'; | |
| 26 import 'package:analyzer/src/generated/ast.dart'; | 29 import 'package:analyzer/src/generated/ast.dart'; |
| 27 import 'package:analyzer/src/generated/engine.dart'; | 30 import 'package:analyzer/src/generated/engine.dart'; |
| 28 import 'package:analyzer/src/generated/scanner.dart'; | 31 import 'package:analyzer/src/generated/scanner.dart'; |
| 29 import 'package:analyzer/src/generated/source.dart'; | 32 import 'package:analyzer/src/generated/source.dart'; |
| 30 | 33 |
| 31 const int DART_RELEVANCE_COMMON_USAGE = 1200; | 34 const int DART_RELEVANCE_COMMON_USAGE = 1200; |
| 32 const int DART_RELEVANCE_DEFAULT = 1000; | 35 const int DART_RELEVANCE_DEFAULT = 1000; |
| 33 const int DART_RELEVANCE_HIGH = 2000; | 36 const int DART_RELEVANCE_HIGH = 2000; |
| 34 const int DART_RELEVANCE_INHERITED_ACCESSOR = 1057; | 37 const int DART_RELEVANCE_INHERITED_ACCESSOR = 1057; |
| 35 const int DART_RELEVANCE_INHERITED_FIELD = 1058; | 38 const int DART_RELEVANCE_INHERITED_FIELD = 1058; |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 86 // LocalReferenceContributor before ImportedReferenceContributor | 89 // LocalReferenceContributor before ImportedReferenceContributor |
| 87 // because local suggestions take precedence | 90 // because local suggestions take precedence |
| 88 // and can hide other suggestions with the same name | 91 // and can hide other suggestions with the same name |
| 89 new LocalReferenceContributor(), | 92 new LocalReferenceContributor(), |
| 90 new ImportedReferenceContributor(), | 93 new ImportedReferenceContributor(), |
| 91 new KeywordContributor(), | 94 new KeywordContributor(), |
| 92 new ArgListContributor(), | 95 new ArgListContributor(), |
| 93 new CombinatorContributor(), | 96 new CombinatorContributor(), |
| 94 new PrefixedElementContributor(), | 97 new PrefixedElementContributor(), |
| 95 new UriContributor(), | 98 new UriContributor(), |
| 99 // TODO(brianwilkerson) Use the completion contributor extension point | |
| 100 // to add the contributor below (and eventually, all the contributors). | |
| 101 new NewCompletionWrapper(new InheritedContributor()) | |
|
danrubel
2015/09/18 00:30:54
Please comment this line out for now and commit th
Brian Wilkerson
2015/09/18 15:59:26
Done
| |
| 96 ]; | 102 ]; |
| 97 } | 103 } |
| 98 if (commonUsageComputer == null) { | 104 if (commonUsageComputer == null) { |
| 99 commonUsageComputer = new CommonUsageComputer(); | 105 commonUsageComputer = new CommonUsageComputer(); |
| 100 } | 106 } |
| 101 } | 107 } |
| 102 | 108 |
| 103 /** | 109 /** |
| 104 * Create a new initialized Dart source completion manager | 110 * Create a new initialized Dart source completion manager |
| 105 */ | 111 */ |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 392 parameterNames: suggestion.parameterNames, | 398 parameterNames: suggestion.parameterNames, |
| 393 parameterTypes: suggestion.parameterTypes, | 399 parameterTypes: suggestion.parameterTypes, |
| 394 requiredParameterCount: suggestion.requiredParameterCount, | 400 requiredParameterCount: suggestion.requiredParameterCount, |
| 395 hasNamedParameters: suggestion.hasNamedParameters, | 401 hasNamedParameters: suggestion.hasNamedParameters, |
| 396 returnType: suggestion.returnType, | 402 returnType: suggestion.returnType, |
| 397 element: suggestion.element); | 403 element: suggestion.element); |
| 398 } | 404 } |
| 399 } | 405 } |
| 400 } | 406 } |
| 401 } | 407 } |
| 408 | |
| 409 /** | |
| 410 * A wrapper around a new dart completion contributor that makes it usable where | |
| 411 * an old dart completion contributor is expected. | |
| 412 */ | |
| 413 class NewCompletionWrapper implements DartCompletionContributor { | |
| 414 /** | |
| 415 * The new-style contributor that is being wrapped. | |
| 416 */ | |
| 417 final newApi.DartCompletionContributor contributor; | |
| 418 | |
| 419 /** | |
| 420 * Initialize a newly created wrapper for the given [contributor]. | |
| 421 */ | |
| 422 NewCompletionWrapper(this.contributor); | |
| 423 | |
| 424 @override | |
| 425 bool computeFast(DartCompletionRequest request) { | |
| 426 List<CompletionSuggestion> suggestions = | |
| 427 contributor.computeSuggestions(new OldRequestWrapper(request)); | |
| 428 if (suggestions == null) { | |
| 429 return false; | |
| 430 } | |
| 431 for (CompletionSuggestion suggestion in suggestions) { | |
| 432 request.addSuggestion(suggestion); | |
| 433 } | |
| 434 return true; | |
| 435 } | |
| 436 | |
| 437 @override | |
| 438 Future<bool> computeFull(DartCompletionRequest request) async { | |
| 439 List<CompletionSuggestion> suggestions = | |
| 440 contributor.computeSuggestions(new OldRequestWrapper(request)); | |
| 441 if (suggestions != null) { | |
| 442 for (CompletionSuggestion suggestion in suggestions) { | |
| 443 request.addSuggestion(suggestion); | |
| 444 } | |
|
danrubel
2015/09/18 00:30:54
return true after this for loop
Brian Wilkerson
2015/09/18 15:59:26
Done
| |
| 445 } | |
| 446 return true; | |
|
danrubel
2015/09/18 00:30:54
return false here
Brian Wilkerson
2015/09/18 15:59:26
Done
| |
| 447 } | |
| 448 | |
| 449 @override | |
| 450 String toString() => 'wrapped $contributor'; | |
| 451 } | |
| 452 | |
| 453 /** | |
| 454 * A wrapper around an old dart completion request that makes it usable where a | |
| 455 * new dart completion request is expected. | |
| 456 */ | |
| 457 class OldRequestWrapper implements newApi.DartCompletionRequest { | |
| 458 final DartCompletionRequest request; | |
| 459 | |
| 460 OldRequestWrapper(this.request); | |
| 461 | |
| 462 @override | |
| 463 AnalysisContext get context => request.context; | |
| 464 | |
| 465 @override | |
| 466 bool get isResolved => request.unit.element != null; | |
| 467 | |
| 468 @override | |
| 469 int get offset => request.offset; | |
| 470 | |
| 471 @override | |
| 472 ResourceProvider get resourceProvider => request.resourceProvider; | |
| 473 | |
| 474 @override | |
| 475 Source get source => request.source; | |
| 476 | |
| 477 @override | |
| 478 CompilationUnit get unit => request.unit; | |
| 479 | |
| 480 @override | |
| 481 String toString() => 'wrapped $request'; | |
| 482 } | |
| OLD | NEW |