| 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.util; | 5 library test.services.completion.util; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:analysis_server/plugin/protocol/protocol.dart' as protocol | 9 import 'package:analysis_server/plugin/protocol/protocol.dart' as protocol |
| 10 show Element, ElementKind; | 10 show Element, ElementKind; |
| (...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 349 expect(element.name, equals(name)); | 349 expect(element.name, equals(name)); |
| 350 String param = element.parameters; | 350 String param = element.parameters; |
| 351 expect(param, isNotNull); | 351 expect(param, isNotNull); |
| 352 expect(param[0], equals('(')); | 352 expect(param[0], equals('(')); |
| 353 expect(param[param.length - 1], equals(')')); | 353 expect(param[param.length - 1], equals(')')); |
| 354 expect(element.returnType, returnType != null ? returnType : 'dynamic'); | 354 expect(element.returnType, returnType != null ? returnType : 'dynamic'); |
| 355 assertHasParameterInfo(cs); | 355 assertHasParameterInfo(cs); |
| 356 return cs; | 356 return cs; |
| 357 } | 357 } |
| 358 | 358 |
| 359 CompletionSuggestion assertSuggestNamedConstructor( | |
| 360 String name, String returnType, | |
| 361 [int relevance = DART_RELEVANCE_DEFAULT, | |
| 362 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { | |
| 363 if (contributor is PrefixedElementContributor) { | |
| 364 CompletionSuggestion cs = | |
| 365 assertSuggest(name, csKind: kind, relevance: relevance); | |
| 366 protocol.Element element = cs.element; | |
| 367 expect(element, isNotNull); | |
| 368 expect(element.kind, equals(protocol.ElementKind.CONSTRUCTOR)); | |
| 369 expect(element.name, equals(name)); | |
| 370 String param = element.parameters; | |
| 371 expect(param, isNotNull); | |
| 372 expect(param[0], equals('(')); | |
| 373 expect(param[param.length - 1], equals(')')); | |
| 374 expect(element.returnType, equals(returnType)); | |
| 375 assertHasParameterInfo(cs); | |
| 376 return cs; | |
| 377 } else { | |
| 378 return assertNotSuggested(name); | |
| 379 } | |
| 380 } | |
| 381 | |
| 382 CompletionSuggestion assertSuggestParameter(String name, String returnType, | 359 CompletionSuggestion assertSuggestParameter(String name, String returnType, |
| 383 {int relevance: DART_RELEVANCE_PARAMETER}) { | 360 {int relevance: DART_RELEVANCE_PARAMETER}) { |
| 384 return assertNotSuggested(name); | 361 return assertNotSuggested(name); |
| 385 } | 362 } |
| 386 | 363 |
| 387 CompletionSuggestion assertSuggestSetter(String name, | 364 CompletionSuggestion assertSuggestSetter(String name, |
| 388 [int relevance = DART_RELEVANCE_DEFAULT, | 365 [int relevance = DART_RELEVANCE_DEFAULT, |
| 389 String importUri, | 366 String importUri, |
| 390 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { | 367 CompletionSuggestionKind kind = CompletionSuggestionKind.INVOCATION]) { |
| 391 CompletionSuggestion cs = assertSuggest(name, | 368 CompletionSuggestion cs = assertSuggest(name, |
| (...skipping 2053 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2445 F1() { } | 2422 F1() { } |
| 2446 class X {X.c(); X._d(); z() {}}'''); | 2423 class X {X.c(); X._d(); z() {}}'''); |
| 2447 addTestSource(''' | 2424 addTestSource(''' |
| 2448 import "/testB.dart"; | 2425 import "/testB.dart"; |
| 2449 var m; | 2426 var m; |
| 2450 main() {new X.^}'''); | 2427 main() {new X.^}'''); |
| 2451 computeFast(); | 2428 computeFast(); |
| 2452 return computeFull((bool result) { | 2429 return computeFull((bool result) { |
| 2453 expect(request.replacementOffset, completionOffset); | 2430 expect(request.replacementOffset, completionOffset); |
| 2454 expect(request.replacementLength, 0); | 2431 expect(request.replacementLength, 0); |
| 2455 assertSuggestNamedConstructor('c', 'X'); | 2432 // Suggested by NamedConstructorContributor |
| 2433 assertNotSuggested('c'); |
| 2456 assertNotSuggested('F1'); | 2434 assertNotSuggested('F1'); |
| 2457 assertNotSuggested('T1'); | 2435 assertNotSuggested('T1'); |
| 2458 assertNotSuggested('_d'); | 2436 assertNotSuggested('_d'); |
| 2459 assertNotSuggested('z'); | 2437 assertNotSuggested('z'); |
| 2460 assertNotSuggested('m'); | 2438 assertNotSuggested('m'); |
| 2461 }); | 2439 }); |
| 2462 } | 2440 } |
| 2463 | 2441 |
| 2464 test_ConstructorName_importedFactory() { | 2442 test_ConstructorName_importedFactory() { |
| 2465 // SimpleIdentifier PrefixedIdentifier TypeName ConstructorName | 2443 // SimpleIdentifier PrefixedIdentifier TypeName ConstructorName |
| 2466 // InstanceCreationExpression | 2444 // InstanceCreationExpression |
| 2467 addSource( | 2445 addSource( |
| 2468 '/testB.dart', | 2446 '/testB.dart', |
| 2469 ''' | 2447 ''' |
| 2470 lib B; | 2448 lib B; |
| 2471 int T1; | 2449 int T1; |
| 2472 F1() { } | 2450 F1() { } |
| 2473 class X {factory X.c(); factory X._d(); z() {}}'''); | 2451 class X {factory X.c(); factory X._d(); z() {}}'''); |
| 2474 addTestSource(''' | 2452 addTestSource(''' |
| 2475 import "/testB.dart"; | 2453 import "/testB.dart"; |
| 2476 var m; | 2454 var m; |
| 2477 main() {new X.^}'''); | 2455 main() {new X.^}'''); |
| 2478 computeFast(); | 2456 computeFast(); |
| 2479 return computeFull((bool result) { | 2457 return computeFull((bool result) { |
| 2480 expect(request.replacementOffset, completionOffset); | 2458 expect(request.replacementOffset, completionOffset); |
| 2481 expect(request.replacementLength, 0); | 2459 expect(request.replacementLength, 0); |
| 2482 assertSuggestNamedConstructor('c', 'X'); | 2460 // Suggested by NamedConstructorContributor |
| 2461 assertNotSuggested('c'); |
| 2483 assertNotSuggested('F1'); | 2462 assertNotSuggested('F1'); |
| 2484 assertNotSuggested('T1'); | 2463 assertNotSuggested('T1'); |
| 2485 assertNotSuggested('_d'); | 2464 assertNotSuggested('_d'); |
| 2486 assertNotSuggested('z'); | 2465 assertNotSuggested('z'); |
| 2487 assertNotSuggested('m'); | 2466 assertNotSuggested('m'); |
| 2488 }); | 2467 }); |
| 2489 } | 2468 } |
| 2490 | 2469 |
| 2491 test_ConstructorName_importedFactory2() { | 2470 test_ConstructorName_importedFactory2() { |
| 2492 // SimpleIdentifier PrefixedIdentifier TypeName ConstructorName | 2471 // SimpleIdentifier PrefixedIdentifier TypeName ConstructorName |
| 2493 // InstanceCreationExpression | 2472 // InstanceCreationExpression |
| 2494 addTestSource(''' | 2473 addTestSource(''' |
| 2495 main() {new String.fr^omCharCodes([]);}'''); | 2474 main() {new String.fr^omCharCodes([]);}'''); |
| 2496 computeFast(); | 2475 computeFast(); |
| 2497 return computeFull((bool result) { | 2476 return computeFull((bool result) { |
| 2498 expect(request.replacementOffset, completionOffset - 2); | 2477 expect(request.replacementOffset, completionOffset - 2); |
| 2499 expect(request.replacementLength, 13); | 2478 expect(request.replacementLength, 13); |
| 2500 assertSuggestNamedConstructor('fromCharCodes', 'String'); | 2479 // Suggested by NamedConstructorContributor |
| 2480 assertNotSuggested('fromCharCodes'); |
| 2501 assertNotSuggested('isEmpty'); | 2481 assertNotSuggested('isEmpty'); |
| 2502 assertNotSuggested('isNotEmpty'); | 2482 assertNotSuggested('isNotEmpty'); |
| 2503 assertNotSuggested('length'); | 2483 assertNotSuggested('length'); |
| 2504 assertNotSuggested('Object'); | 2484 assertNotSuggested('Object'); |
| 2505 assertNotSuggested('String'); | 2485 assertNotSuggested('String'); |
| 2506 }); | 2486 }); |
| 2507 } | 2487 } |
| 2508 | 2488 |
| 2509 test_ConstructorName_localClass() { | 2489 test_ConstructorName_localClass() { |
| 2510 // SimpleIdentifier PrefixedIdentifier TypeName ConstructorName | 2490 // SimpleIdentifier PrefixedIdentifier TypeName ConstructorName |
| 2511 // InstanceCreationExpression | 2491 // InstanceCreationExpression |
| 2512 addTestSource(''' | 2492 addTestSource(''' |
| 2513 int T1; | 2493 int T1; |
| 2514 F1() { } | 2494 F1() { } |
| 2515 class X {X.c(); X._d(); z() {}} | 2495 class X {X.c(); X._d(); z() {}} |
| 2516 main() {new X.^}'''); | 2496 main() {new X.^}'''); |
| 2517 computeFast(); | 2497 computeFast(); |
| 2518 return computeFull((bool result) { | 2498 return computeFull((bool result) { |
| 2519 expect(request.replacementOffset, completionOffset); | 2499 expect(request.replacementOffset, completionOffset); |
| 2520 expect(request.replacementLength, 0); | 2500 expect(request.replacementLength, 0); |
| 2521 assertSuggestNamedConstructor('c', 'X'); | 2501 // Suggested by NamedConstructorContributor |
| 2522 assertSuggestNamedConstructor('_d', 'X'); | 2502 assertNotSuggested('c'); |
| 2503 assertNotSuggested('_d'); |
| 2523 assertNotSuggested('F1'); | 2504 assertNotSuggested('F1'); |
| 2524 assertNotSuggested('T1'); | 2505 assertNotSuggested('T1'); |
| 2525 assertNotSuggested('z'); | 2506 assertNotSuggested('z'); |
| 2526 assertNotSuggested('m'); | 2507 assertNotSuggested('m'); |
| 2527 }); | 2508 }); |
| 2528 } | 2509 } |
| 2529 | 2510 |
| 2530 test_ConstructorName_localFactory() { | 2511 test_ConstructorName_localFactory() { |
| 2531 // SimpleIdentifier PrefixedIdentifier TypeName ConstructorName | 2512 // SimpleIdentifier PrefixedIdentifier TypeName ConstructorName |
| 2532 // InstanceCreationExpression | 2513 // InstanceCreationExpression |
| 2533 addTestSource(''' | 2514 addTestSource(''' |
| 2534 int T1; | 2515 int T1; |
| 2535 F1() { } | 2516 F1() { } |
| 2536 class X {factory X.c(); factory X._d(); z() {}} | 2517 class X {factory X.c(); factory X._d(); z() {}} |
| 2537 main() {new X.^}'''); | 2518 main() {new X.^}'''); |
| 2538 computeFast(); | 2519 computeFast(); |
| 2539 return computeFull((bool result) { | 2520 return computeFull((bool result) { |
| 2540 expect(request.replacementOffset, completionOffset); | 2521 expect(request.replacementOffset, completionOffset); |
| 2541 expect(request.replacementLength, 0); | 2522 expect(request.replacementLength, 0); |
| 2542 assertSuggestNamedConstructor('c', 'X'); | 2523 // Suggested by NamedConstructorContributor |
| 2543 assertSuggestNamedConstructor('_d', 'X'); | 2524 assertNotSuggested('c'); |
| 2525 assertNotSuggested('_d'); |
| 2544 assertNotSuggested('F1'); | 2526 assertNotSuggested('F1'); |
| 2545 assertNotSuggested('T1'); | 2527 assertNotSuggested('T1'); |
| 2546 assertNotSuggested('z'); | 2528 assertNotSuggested('z'); |
| 2547 assertNotSuggested('m'); | 2529 assertNotSuggested('m'); |
| 2548 }); | 2530 }); |
| 2549 } | 2531 } |
| 2550 | 2532 |
| 2551 test_DefaultFormalParameter_named_expression() { | 2533 test_DefaultFormalParameter_named_expression() { |
| 2552 // DefaultFormalParameter FormalParameterList MethodDeclaration | 2534 // DefaultFormalParameter FormalParameterList MethodDeclaration |
| 2553 addTestSource(''' | 2535 addTestSource(''' |
| (...skipping 2159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4713 assertNotSuggested('bar2'); | 4695 assertNotSuggested('bar2'); |
| 4714 assertNotSuggested('_B'); | 4696 assertNotSuggested('_B'); |
| 4715 assertSuggestLocalClass('Y'); | 4697 assertSuggestLocalClass('Y'); |
| 4716 assertSuggestLocalClass('C'); | 4698 assertSuggestLocalClass('C'); |
| 4717 assertSuggestLocalVariable('f', null); | 4699 assertSuggestLocalVariable('f', null); |
| 4718 assertNotSuggested('x'); | 4700 assertNotSuggested('x'); |
| 4719 assertNotSuggested('e'); | 4701 assertNotSuggested('e'); |
| 4720 }); | 4702 }); |
| 4721 } | 4703 } |
| 4722 } | 4704 } |
| OLD | NEW |