| 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.suggestion.builder; | 5 library services.completion.suggestion.builder; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:collection'; | 8 import 'dart:collection'; |
| 9 | 9 |
| 10 import 'package:analysis_server/src/protocol_server.dart' | 10 import 'package:analysis_server/src/protocol_server.dart' |
| (...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 461 bool instCreation) { | 461 bool instCreation) { |
| 462 if (library != null) { | 462 if (library != null) { |
| 463 library.visitChildren(new LibraryElementSuggestionBuilder( | 463 library.visitChildren(new LibraryElementSuggestionBuilder( |
| 464 request, kind, typesOnly, instCreation)); | 464 request, kind, typesOnly, instCreation)); |
| 465 } | 465 } |
| 466 } | 466 } |
| 467 } | 467 } |
| 468 | 468 |
| 469 /** | 469 /** |
| 470 * This class visits elements in a class and provides suggestions based upon | 470 * This class visits elements in a class and provides suggestions based upon |
| 471 * the visible named constructors in that class. | |
| 472 */ | |
| 473 class NamedConstructorSuggestionBuilder extends GeneralizingElementVisitor | |
| 474 with ElementSuggestionBuilder | |
| 475 implements SuggestionBuilder { | |
| 476 final DartCompletionRequest request; | |
| 477 | |
| 478 NamedConstructorSuggestionBuilder(this.request); | |
| 479 | |
| 480 @override | |
| 481 CompletionSuggestionKind get kind => CompletionSuggestionKind.INVOCATION; | |
| 482 | |
| 483 @override | |
| 484 bool computeFast(AstNode node) { | |
| 485 return false; | |
| 486 } | |
| 487 | |
| 488 @override | |
| 489 Future<bool> computeFull(AstNode node) { | |
| 490 if (node is SimpleIdentifier) { | |
| 491 node = node.parent; | |
| 492 } | |
| 493 if (node is ConstructorName) { | |
| 494 TypeName typeName = node.type; | |
| 495 if (typeName != null) { | |
| 496 DartType type = typeName.type; | |
| 497 if (type != null) { | |
| 498 if (type.element is ClassElement) { | |
| 499 type.element.accept(this); | |
| 500 } | |
| 501 return new Future.value(true); | |
| 502 } | |
| 503 } | |
| 504 } | |
| 505 return new Future.value(false); | |
| 506 } | |
| 507 | |
| 508 @override | |
| 509 visitClassElement(ClassElement element) { | |
| 510 element.visitChildren(this); | |
| 511 } | |
| 512 | |
| 513 @override | |
| 514 visitConstructorElement(ConstructorElement element) { | |
| 515 addSuggestion(element); | |
| 516 } | |
| 517 | |
| 518 @override | |
| 519 visitElement(Element element) { | |
| 520 // ignored | |
| 521 } | |
| 522 } | |
| 523 | |
| 524 /** | |
| 525 * This class visits elements in a class and provides suggestions based upon | |
| 526 * the visible static members in that class. Clients should call | 471 * the visible static members in that class. Clients should call |
| 527 * [StaticClassElementSuggestionBuilder.suggestionsFor]. | 472 * [StaticClassElementSuggestionBuilder.suggestionsFor]. |
| 528 */ | 473 */ |
| 529 class StaticClassElementSuggestionBuilder extends GeneralizingElementVisitor | 474 class StaticClassElementSuggestionBuilder extends GeneralizingElementVisitor |
| 530 with ElementSuggestionBuilder { | 475 with ElementSuggestionBuilder { |
| 531 final DartCompletionRequest request; | 476 final DartCompletionRequest request; |
| 532 | 477 |
| 533 StaticClassElementSuggestionBuilder(this.request); | 478 StaticClassElementSuggestionBuilder(this.request); |
| 534 | 479 |
| 535 @override | 480 @override |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 597 * or `false` if [computeFull] should be called. | 542 * or `false` if [computeFull] should be called. |
| 598 */ | 543 */ |
| 599 bool computeFast(AstNode node); | 544 bool computeFast(AstNode node); |
| 600 | 545 |
| 601 /** | 546 /** |
| 602 * Return a future that computes the suggestions given a fully resolved AST. | 547 * Return a future that computes the suggestions given a fully resolved AST. |
| 603 * The future returns `true` if suggestions were added, else `false`. | 548 * The future returns `true` if suggestions were added, else `false`. |
| 604 */ | 549 */ |
| 605 Future<bool> computeFull(AstNode node); | 550 Future<bool> computeFull(AstNode node); |
| 606 } | 551 } |
| OLD | NEW |