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

Side by Side Diff: pkg/analysis_server/lib/src/services/completion/dart_completion_manager.dart

Issue 1407273004: next step toward completion plugin API (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: address comments Created 5 years, 2 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
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 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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698