| 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 test.services.completion.dart.local; | 5 library test.services.completion.dart.local; |
| 6 | 6 |
| 7 import 'package:analysis_server/src/protocol_server.dart'; | 7 import 'package:analysis_server/src/protocol_server.dart'; |
| 8 import 'package:analysis_server/src/services/completion/dart_completion_manager.
dart'; | 8 import 'package:analysis_server/src/services/completion/dart_completion_manager.
dart'; |
| 9 import 'package:analysis_server/src/services/completion/local_computer.dart'; | 9 import 'package:analysis_server/src/services/completion/local_computer.dart'; |
| 10 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 @override | 23 @override |
| 24 CompletionSuggestion assertSuggestLocalClass(String name, {int relevance: | 24 CompletionSuggestion assertSuggestLocalClass(String name, {int relevance: |
| 25 COMPLETION_RELEVANCE_DEFAULT, bool isDeprecated: false}) { | 25 COMPLETION_RELEVANCE_DEFAULT, bool isDeprecated: false}) { |
| 26 return assertSuggestClass( | 26 return assertSuggestClass( |
| 27 name, | 27 name, |
| 28 relevance: relevance, | 28 relevance: relevance, |
| 29 isDeprecated: isDeprecated); | 29 isDeprecated: isDeprecated); |
| 30 } | 30 } |
| 31 | 31 |
| 32 @override | 32 @override |
| 33 CompletionSuggestion assertSuggestLocalClassTypeAlias(String name, |
| 34 {int relevance: COMPLETION_RELEVANCE_DEFAULT}) { |
| 35 return assertSuggestClassTypeAlias(name, relevance); |
| 36 } |
| 37 |
| 38 @override |
| 33 CompletionSuggestion assertSuggestLocalField(String name, String type, | 39 CompletionSuggestion assertSuggestLocalField(String name, String type, |
| 34 {int relevance: COMPLETION_RELEVANCE_DEFAULT, bool isDeprecated: false}) { | 40 {int relevance: DART_RELEVANCE_LOCAL_FIELD, bool deprecated: false}) { |
| 35 return assertSuggestField( | 41 return assertSuggestField( |
| 36 name, | 42 name, |
| 37 type, | 43 type, |
| 38 relevance: relevance, | 44 relevance: relevance, |
| 39 isDeprecated: isDeprecated); | 45 isDeprecated: deprecated); |
| 46 } |
| 47 |
| 48 @override |
| 49 CompletionSuggestion assertSuggestLocalFunction(String name, |
| 50 String returnType, {bool deprecated: false, int relevance: |
| 51 DART_RELEVANCE_LOCAL_FUNCTION}) { |
| 52 return assertSuggestFunction(name, returnType, deprecated, relevance); |
| 53 } |
| 54 |
| 55 @override |
| 56 CompletionSuggestion assertSuggestLocalFunctionTypeAlias(String name, |
| 57 String returnType, {bool deprecated: false, int relevance: |
| 58 COMPLETION_RELEVANCE_DEFAULT}) { |
| 59 return assertSuggestFunctionTypeAlias( |
| 60 name, |
| 61 returnType, |
| 62 deprecated, |
| 63 relevance); |
| 40 } | 64 } |
| 41 | 65 |
| 42 @override | 66 @override |
| 43 CompletionSuggestion assertSuggestLocalGetter(String name, String returnType, | 67 CompletionSuggestion assertSuggestLocalGetter(String name, String returnType, |
| 44 {int relevance: COMPLETION_RELEVANCE_DEFAULT, bool isDeprecated: false}) { | 68 {int relevance: DART_RELEVANCE_LOCAL_ACCESSOR, bool deprecated: false}) { |
| 45 return assertSuggestGetter( | 69 return assertSuggestGetter( |
| 46 name, | 70 name, |
| 47 returnType, | 71 returnType, |
| 48 relevance: relevance, | 72 relevance: relevance, |
| 49 isDeprecated: isDeprecated); | 73 isDeprecated: deprecated); |
| 50 } | 74 } |
| 51 | 75 |
| 52 @override | 76 @override |
| 53 CompletionSuggestion assertSuggestLocalMethod(String name, | 77 CompletionSuggestion assertSuggestLocalMethod(String name, |
| 54 String declaringType, String returnType, {int relevance: | 78 String declaringType, String returnType, {int relevance: |
| 55 COMPLETION_RELEVANCE_DEFAULT, bool isDeprecated: false}) { | 79 DART_RELEVANCE_LOCAL_METHOD, bool deprecated: false}) { |
| 56 return assertSuggestMethod( | 80 return assertSuggestMethod( |
| 57 name, | 81 name, |
| 58 declaringType, | 82 declaringType, |
| 59 returnType, | 83 returnType, |
| 60 relevance: relevance, | 84 relevance: relevance, |
| 61 isDeprecated: isDeprecated); | 85 isDeprecated: deprecated); |
| 86 } |
| 87 |
| 88 @override |
| 89 CompletionSuggestion assertSuggestLocalSetter(String name, {int relevance: |
| 90 DART_RELEVANCE_LOCAL_ACCESSOR}) { |
| 91 return assertSuggestSetter(name, relevance); |
| 92 } |
| 93 |
| 94 @override |
| 95 CompletionSuggestion assertSuggestLocalTopLevelVar(String name, |
| 96 String returnType, {int relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE
}) { |
| 97 return assertSuggestTopLevelVar(name, returnType, relevance); |
| 98 } |
| 99 |
| 100 @override |
| 101 CompletionSuggestion assertSuggestLocalVariable(String name, |
| 102 String returnType, {int relevance: DART_RELEVANCE_LOCAL_VARIABLE}) { |
| 103 // Local variables should only be suggested by LocalComputer |
| 104 CompletionSuggestion cs = assertSuggest( |
| 105 name, |
| 106 csKind: CompletionSuggestionKind.INVOCATION, |
| 107 relevance: relevance); |
| 108 expect(cs.returnType, returnType != null ? returnType : 'dynamic'); |
| 109 Element element = cs.element; |
| 110 expect(element, isNotNull); |
| 111 expect(element.kind, equals(ElementKind.LOCAL_VARIABLE)); |
| 112 expect(element.name, equals(name)); |
| 113 expect(element.parameters, isNull); |
| 114 expect(element.returnType, returnType != null ? returnType : 'dynamic'); |
| 115 assertHasNoParameterInfo(cs); |
| 116 return cs; |
| 117 } |
| 118 |
| 119 CompletionSuggestion assertSuggestParameter(String name, String returnType, |
| 120 {int relevance: DART_RELEVANCE_PARAMETER}) { |
| 121 CompletionSuggestion cs = assertSuggest( |
| 122 name, |
| 123 csKind: CompletionSuggestionKind.INVOCATION, |
| 124 relevance: relevance); |
| 125 expect(cs.returnType, returnType != null ? returnType : 'dynamic'); |
| 126 Element element = cs.element; |
| 127 expect(element, isNotNull); |
| 128 expect(element.kind, equals(ElementKind.PARAMETER)); |
| 129 expect(element.name, equals(name)); |
| 130 expect(element.parameters, isNull); |
| 131 expect( |
| 132 element.returnType, |
| 133 equals(returnType != null ? returnType : 'dynamic')); |
| 134 return cs; |
| 62 } | 135 } |
| 63 | 136 |
| 64 fail_mixin_ordering() { | 137 fail_mixin_ordering() { |
| 65 // TODO(paulberry): Duplicates aren't being removed, so we see both M1.m() | 138 // TODO(paulberry): Duplicates aren't being removed, so we see both M1.m() |
| 66 // and M2.m(). | 139 // and M2.m(). |
| 67 addTestSource(''' | 140 addTestSource(''' |
| 68 class B {} | 141 class B {} |
| 69 class M1 { | 142 class M1 { |
| 70 void m() {} | 143 void m() {} |
| 71 } | 144 } |
| (...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 366 } | 439 } |
| 367 | 440 |
| 368 test_function_parameters_mixed_required_and_named() { | 441 test_function_parameters_mixed_required_and_named() { |
| 369 addTestSource(''' | 442 addTestSource(''' |
| 370 void m(x, {int y}) {} | 443 void m(x, {int y}) {} |
| 371 class B extends A { | 444 class B extends A { |
| 372 main() {^} | 445 main() {^} |
| 373 } | 446 } |
| 374 '''); | 447 '''); |
| 375 expect(computeFast(), isTrue); | 448 expect(computeFast(), isTrue); |
| 376 CompletionSuggestion suggestion = assertSuggestFunction('m', 'void'); | 449 CompletionSuggestion suggestion = assertSuggestLocalFunction('m', 'void'); |
| 377 expect(suggestion.parameterNames, hasLength(2)); | 450 expect(suggestion.parameterNames, hasLength(2)); |
| 378 expect(suggestion.parameterNames[0], 'x'); | 451 expect(suggestion.parameterNames[0], 'x'); |
| 379 expect(suggestion.parameterTypes[0], 'dynamic'); | 452 expect(suggestion.parameterTypes[0], 'dynamic'); |
| 380 expect(suggestion.parameterNames[1], 'y'); | 453 expect(suggestion.parameterNames[1], 'y'); |
| 381 expect(suggestion.parameterTypes[1], 'int'); | 454 expect(suggestion.parameterTypes[1], 'int'); |
| 382 expect(suggestion.requiredParameterCount, 1); | 455 expect(suggestion.requiredParameterCount, 1); |
| 383 expect(suggestion.hasNamedParameters, true); | 456 expect(suggestion.hasNamedParameters, true); |
| 384 } | 457 } |
| 385 | 458 |
| 386 test_function_parameters_mixed_required_and_positional() { | 459 test_function_parameters_mixed_required_and_positional() { |
| 387 addTestSource(''' | 460 addTestSource(''' |
| 388 void m(x, [int y]) {} | 461 void m(x, [int y]) {} |
| 389 class B extends A { | 462 class B extends A { |
| 390 main() {^} | 463 main() {^} |
| 391 } | 464 } |
| 392 '''); | 465 '''); |
| 393 expect(computeFast(), isTrue); | 466 expect(computeFast(), isTrue); |
| 394 CompletionSuggestion suggestion = assertSuggestFunction('m', 'void'); | 467 CompletionSuggestion suggestion = assertSuggestLocalFunction('m', 'void'); |
| 395 expect(suggestion.parameterNames, hasLength(2)); | 468 expect(suggestion.parameterNames, hasLength(2)); |
| 396 expect(suggestion.parameterNames[0], 'x'); | 469 expect(suggestion.parameterNames[0], 'x'); |
| 397 expect(suggestion.parameterTypes[0], 'dynamic'); | 470 expect(suggestion.parameterTypes[0], 'dynamic'); |
| 398 expect(suggestion.parameterNames[1], 'y'); | 471 expect(suggestion.parameterNames[1], 'y'); |
| 399 expect(suggestion.parameterTypes[1], 'int'); | 472 expect(suggestion.parameterTypes[1], 'int'); |
| 400 expect(suggestion.requiredParameterCount, 1); | 473 expect(suggestion.requiredParameterCount, 1); |
| 401 expect(suggestion.hasNamedParameters, false); | 474 expect(suggestion.hasNamedParameters, false); |
| 402 } | 475 } |
| 403 | 476 |
| 404 test_function_parameters_named() { | 477 test_function_parameters_named() { |
| 405 addTestSource(''' | 478 addTestSource(''' |
| 406 void m({x, int y}) {} | 479 void m({x, int y}) {} |
| 407 class B extends A { | 480 class B extends A { |
| 408 main() {^} | 481 main() {^} |
| 409 } | 482 } |
| 410 '''); | 483 '''); |
| 411 expect(computeFast(), isTrue); | 484 expect(computeFast(), isTrue); |
| 412 CompletionSuggestion suggestion = assertSuggestFunction('m', 'void'); | 485 CompletionSuggestion suggestion = assertSuggestLocalFunction('m', 'void'); |
| 413 expect(suggestion.parameterNames, hasLength(2)); | 486 expect(suggestion.parameterNames, hasLength(2)); |
| 414 expect(suggestion.parameterNames[0], 'x'); | 487 expect(suggestion.parameterNames[0], 'x'); |
| 415 expect(suggestion.parameterTypes[0], 'dynamic'); | 488 expect(suggestion.parameterTypes[0], 'dynamic'); |
| 416 expect(suggestion.parameterNames[1], 'y'); | 489 expect(suggestion.parameterNames[1], 'y'); |
| 417 expect(suggestion.parameterTypes[1], 'int'); | 490 expect(suggestion.parameterTypes[1], 'int'); |
| 418 expect(suggestion.requiredParameterCount, 0); | 491 expect(suggestion.requiredParameterCount, 0); |
| 419 expect(suggestion.hasNamedParameters, true); | 492 expect(suggestion.hasNamedParameters, true); |
| 420 } | 493 } |
| 421 | 494 |
| 422 test_function_parameters_none() { | 495 test_function_parameters_none() { |
| 423 addTestSource(''' | 496 addTestSource(''' |
| 424 void m() {} | 497 void m() {} |
| 425 class B extends A { | 498 class B extends A { |
| 426 main() {^} | 499 main() {^} |
| 427 } | 500 } |
| 428 '''); | 501 '''); |
| 429 expect(computeFast(), isTrue); | 502 expect(computeFast(), isTrue); |
| 430 CompletionSuggestion suggestion = assertSuggestFunction('m', 'void'); | 503 CompletionSuggestion suggestion = assertSuggestLocalFunction('m', 'void'); |
| 431 expect(suggestion.parameterNames, isEmpty); | 504 expect(suggestion.parameterNames, isEmpty); |
| 432 expect(suggestion.parameterTypes, isEmpty); | 505 expect(suggestion.parameterTypes, isEmpty); |
| 433 expect(suggestion.requiredParameterCount, 0); | 506 expect(suggestion.requiredParameterCount, 0); |
| 434 expect(suggestion.hasNamedParameters, false); | 507 expect(suggestion.hasNamedParameters, false); |
| 435 } | 508 } |
| 436 | 509 |
| 437 test_function_parameters_positional() { | 510 test_function_parameters_positional() { |
| 438 addTestSource(''' | 511 addTestSource(''' |
| 439 void m([x, int y]) {} | 512 void m([x, int y]) {} |
| 440 class B extends A { | 513 class B extends A { |
| 441 main() {^} | 514 main() {^} |
| 442 } | 515 } |
| 443 '''); | 516 '''); |
| 444 expect(computeFast(), isTrue); | 517 expect(computeFast(), isTrue); |
| 445 CompletionSuggestion suggestion = assertSuggestFunction('m', 'void'); | 518 CompletionSuggestion suggestion = assertSuggestLocalFunction('m', 'void'); |
| 446 expect(suggestion.parameterNames, hasLength(2)); | 519 expect(suggestion.parameterNames, hasLength(2)); |
| 447 expect(suggestion.parameterNames[0], 'x'); | 520 expect(suggestion.parameterNames[0], 'x'); |
| 448 expect(suggestion.parameterTypes[0], 'dynamic'); | 521 expect(suggestion.parameterTypes[0], 'dynamic'); |
| 449 expect(suggestion.parameterNames[1], 'y'); | 522 expect(suggestion.parameterNames[1], 'y'); |
| 450 expect(suggestion.parameterTypes[1], 'int'); | 523 expect(suggestion.parameterTypes[1], 'int'); |
| 451 expect(suggestion.requiredParameterCount, 0); | 524 expect(suggestion.requiredParameterCount, 0); |
| 452 expect(suggestion.hasNamedParameters, false); | 525 expect(suggestion.hasNamedParameters, false); |
| 453 } | 526 } |
| 454 | 527 |
| 455 test_function_parameters_required() { | 528 test_function_parameters_required() { |
| 456 addTestSource(''' | 529 addTestSource(''' |
| 457 void m(x, int y) {} | 530 void m(x, int y) {} |
| 458 class B extends A { | 531 class B extends A { |
| 459 main() {^} | 532 main() {^} |
| 460 } | 533 } |
| 461 '''); | 534 '''); |
| 462 expect(computeFast(), isTrue); | 535 expect(computeFast(), isTrue); |
| 463 CompletionSuggestion suggestion = assertSuggestFunction('m', 'void'); | 536 CompletionSuggestion suggestion = assertSuggestLocalFunction('m', 'void'); |
| 464 expect(suggestion.parameterNames, hasLength(2)); | 537 expect(suggestion.parameterNames, hasLength(2)); |
| 465 expect(suggestion.parameterNames[0], 'x'); | 538 expect(suggestion.parameterNames[0], 'x'); |
| 466 expect(suggestion.parameterTypes[0], 'dynamic'); | 539 expect(suggestion.parameterTypes[0], 'dynamic'); |
| 467 expect(suggestion.parameterNames[1], 'y'); | 540 expect(suggestion.parameterNames[1], 'y'); |
| 468 expect(suggestion.parameterTypes[1], 'int'); | 541 expect(suggestion.parameterTypes[1], 'int'); |
| 469 expect(suggestion.requiredParameterCount, 2); | 542 expect(suggestion.requiredParameterCount, 2); |
| 470 expect(suggestion.hasNamedParameters, false); | 543 expect(suggestion.hasNamedParameters, false); |
| 471 } | 544 } |
| 472 | 545 |
| 473 test_method_parameters_mixed_required_and_named() { | 546 test_method_parameters_mixed_required_and_named() { |
| 474 addTestSource(''' | 547 addTestSource(''' |
| 475 class A { | 548 class A { |
| 476 void m(x, {int y}) {} | 549 void m(x, {int y}) {} |
| 477 } | 550 } |
| 478 class B extends A { | 551 class B extends A { |
| 479 main() {^} | 552 main() {^} |
| 480 } | 553 } |
| 481 '''); | 554 '''); |
| 482 expect(computeFast(), isTrue); | 555 expect(computeFast(), isTrue); |
| 483 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); | 556 CompletionSuggestion suggestion = |
| 557 assertSuggestLocalMethod('m', 'A', 'void'); |
| 484 expect(suggestion.parameterNames, hasLength(2)); | 558 expect(suggestion.parameterNames, hasLength(2)); |
| 485 expect(suggestion.parameterNames[0], 'x'); | 559 expect(suggestion.parameterNames[0], 'x'); |
| 486 expect(suggestion.parameterTypes[0], 'dynamic'); | 560 expect(suggestion.parameterTypes[0], 'dynamic'); |
| 487 expect(suggestion.parameterNames[1], 'y'); | 561 expect(suggestion.parameterNames[1], 'y'); |
| 488 expect(suggestion.parameterTypes[1], 'int'); | 562 expect(suggestion.parameterTypes[1], 'int'); |
| 489 expect(suggestion.requiredParameterCount, 1); | 563 expect(suggestion.requiredParameterCount, 1); |
| 490 expect(suggestion.hasNamedParameters, true); | 564 expect(suggestion.hasNamedParameters, true); |
| 491 } | 565 } |
| 492 | 566 |
| 493 test_method_parameters_mixed_required_and_positional() { | 567 test_method_parameters_mixed_required_and_positional() { |
| 494 addTestSource(''' | 568 addTestSource(''' |
| 495 class A { | 569 class A { |
| 496 void m(x, [int y]) {} | 570 void m(x, [int y]) {} |
| 497 } | 571 } |
| 498 class B extends A { | 572 class B extends A { |
| 499 main() {^} | 573 main() {^} |
| 500 } | 574 } |
| 501 '''); | 575 '''); |
| 502 expect(computeFast(), isTrue); | 576 expect(computeFast(), isTrue); |
| 503 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); | 577 CompletionSuggestion suggestion = |
| 578 assertSuggestLocalMethod('m', 'A', 'void'); |
| 504 expect(suggestion.parameterNames, hasLength(2)); | 579 expect(suggestion.parameterNames, hasLength(2)); |
| 505 expect(suggestion.parameterNames[0], 'x'); | 580 expect(suggestion.parameterNames[0], 'x'); |
| 506 expect(suggestion.parameterTypes[0], 'dynamic'); | 581 expect(suggestion.parameterTypes[0], 'dynamic'); |
| 507 expect(suggestion.parameterNames[1], 'y'); | 582 expect(suggestion.parameterNames[1], 'y'); |
| 508 expect(suggestion.parameterTypes[1], 'int'); | 583 expect(suggestion.parameterTypes[1], 'int'); |
| 509 expect(suggestion.requiredParameterCount, 1); | 584 expect(suggestion.requiredParameterCount, 1); |
| 510 expect(suggestion.hasNamedParameters, false); | 585 expect(suggestion.hasNamedParameters, false); |
| 511 } | 586 } |
| 512 | 587 |
| 513 test_method_parameters_named() { | 588 test_method_parameters_named() { |
| 514 addTestSource(''' | 589 addTestSource(''' |
| 515 class A { | 590 class A { |
| 516 void m({x, int y}) {} | 591 void m({x, int y}) {} |
| 517 } | 592 } |
| 518 class B extends A { | 593 class B extends A { |
| 519 main() {^} | 594 main() {^} |
| 520 } | 595 } |
| 521 '''); | 596 '''); |
| 522 expect(computeFast(), isTrue); | 597 expect(computeFast(), isTrue); |
| 523 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); | 598 CompletionSuggestion suggestion = |
| 599 assertSuggestLocalMethod('m', 'A', 'void'); |
| 524 expect(suggestion.parameterNames, hasLength(2)); | 600 expect(suggestion.parameterNames, hasLength(2)); |
| 525 expect(suggestion.parameterNames[0], 'x'); | 601 expect(suggestion.parameterNames[0], 'x'); |
| 526 expect(suggestion.parameterTypes[0], 'dynamic'); | 602 expect(suggestion.parameterTypes[0], 'dynamic'); |
| 527 expect(suggestion.parameterNames[1], 'y'); | 603 expect(suggestion.parameterNames[1], 'y'); |
| 528 expect(suggestion.parameterTypes[1], 'int'); | 604 expect(suggestion.parameterTypes[1], 'int'); |
| 529 expect(suggestion.requiredParameterCount, 0); | 605 expect(suggestion.requiredParameterCount, 0); |
| 530 expect(suggestion.hasNamedParameters, true); | 606 expect(suggestion.hasNamedParameters, true); |
| 531 } | 607 } |
| 532 | 608 |
| 533 test_method_parameters_none() { | 609 test_method_parameters_none() { |
| 534 addTestSource(''' | 610 addTestSource(''' |
| 535 class A { | 611 class A { |
| 536 void m() {} | 612 void m() {} |
| 537 } | 613 } |
| 538 class B extends A { | 614 class B extends A { |
| 539 main() {^} | 615 main() {^} |
| 540 } | 616 } |
| 541 '''); | 617 '''); |
| 542 expect(computeFast(), isTrue); | 618 expect(computeFast(), isTrue); |
| 543 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); | 619 CompletionSuggestion suggestion = |
| 620 assertSuggestLocalMethod('m', 'A', 'void'); |
| 544 expect(suggestion.parameterNames, isEmpty); | 621 expect(suggestion.parameterNames, isEmpty); |
| 545 expect(suggestion.parameterTypes, isEmpty); | 622 expect(suggestion.parameterTypes, isEmpty); |
| 546 expect(suggestion.requiredParameterCount, 0); | 623 expect(suggestion.requiredParameterCount, 0); |
| 547 expect(suggestion.hasNamedParameters, false); | 624 expect(suggestion.hasNamedParameters, false); |
| 548 } | 625 } |
| 549 | 626 |
| 550 test_method_parameters_positional() { | 627 test_method_parameters_positional() { |
| 551 addTestSource(''' | 628 addTestSource(''' |
| 552 class A { | 629 class A { |
| 553 void m([x, int y]) {} | 630 void m([x, int y]) {} |
| 554 } | 631 } |
| 555 class B extends A { | 632 class B extends A { |
| 556 main() {^} | 633 main() {^} |
| 557 } | 634 } |
| 558 '''); | 635 '''); |
| 559 expect(computeFast(), isTrue); | 636 expect(computeFast(), isTrue); |
| 560 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); | 637 CompletionSuggestion suggestion = |
| 638 assertSuggestLocalMethod('m', 'A', 'void'); |
| 561 expect(suggestion.parameterNames, hasLength(2)); | 639 expect(suggestion.parameterNames, hasLength(2)); |
| 562 expect(suggestion.parameterNames[0], 'x'); | 640 expect(suggestion.parameterNames[0], 'x'); |
| 563 expect(suggestion.parameterTypes[0], 'dynamic'); | 641 expect(suggestion.parameterTypes[0], 'dynamic'); |
| 564 expect(suggestion.parameterNames[1], 'y'); | 642 expect(suggestion.parameterNames[1], 'y'); |
| 565 expect(suggestion.parameterTypes[1], 'int'); | 643 expect(suggestion.parameterTypes[1], 'int'); |
| 566 expect(suggestion.requiredParameterCount, 0); | 644 expect(suggestion.requiredParameterCount, 0); |
| 567 expect(suggestion.hasNamedParameters, false); | 645 expect(suggestion.hasNamedParameters, false); |
| 568 } | 646 } |
| 569 | 647 |
| 570 test_method_parameters_required() { | 648 test_method_parameters_required() { |
| 571 addTestSource(''' | 649 addTestSource(''' |
| 572 class A { | 650 class A { |
| 573 void m(x, int y) {} | 651 void m(x, int y) {} |
| 574 } | 652 } |
| 575 class B extends A { | 653 class B extends A { |
| 576 main() {^} | 654 main() {^} |
| 577 } | 655 } |
| 578 '''); | 656 '''); |
| 579 expect(computeFast(), isTrue); | 657 expect(computeFast(), isTrue); |
| 580 CompletionSuggestion suggestion = assertSuggestMethod('m', 'A', 'void'); | 658 CompletionSuggestion suggestion = |
| 659 assertSuggestLocalMethod('m', 'A', 'void'); |
| 581 expect(suggestion.parameterNames, hasLength(2)); | 660 expect(suggestion.parameterNames, hasLength(2)); |
| 582 expect(suggestion.parameterNames[0], 'x'); | 661 expect(suggestion.parameterNames[0], 'x'); |
| 583 expect(suggestion.parameterTypes[0], 'dynamic'); | 662 expect(suggestion.parameterTypes[0], 'dynamic'); |
| 584 expect(suggestion.parameterNames[1], 'y'); | 663 expect(suggestion.parameterNames[1], 'y'); |
| 585 expect(suggestion.parameterTypes[1], 'int'); | 664 expect(suggestion.parameterTypes[1], 'int'); |
| 586 expect(suggestion.requiredParameterCount, 2); | 665 expect(suggestion.requiredParameterCount, 2); |
| 587 expect(suggestion.hasNamedParameters, false); | 666 expect(suggestion.hasNamedParameters, false); |
| 588 } | 667 } |
| 589 } | 668 } |
| OLD | NEW |