OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 import 'dart:async'; | 5 import 'dart:async'; |
6 | 6 |
7 import 'package:analyzer/dart/ast/ast.dart'; | 7 import 'package:analyzer/dart/ast/ast.dart'; |
8 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; | 8 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; |
9 import 'package:analyzer/dart/element/element.dart'; | 9 import 'package:analyzer/dart/element/element.dart'; |
10 import 'package:analyzer/dart/element/type.dart'; | 10 import 'package:analyzer/dart/element/type.dart'; |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
356 driver.removeFile(a); | 356 driver.removeFile(a); |
357 expect(driver.addedFiles, isNot(contains(a))); | 357 expect(driver.addedFiles, isNot(contains(a))); |
358 expect(driver.addedFiles, isNot(contains(b))); | 358 expect(driver.addedFiles, isNot(contains(b))); |
359 } | 359 } |
360 | 360 |
361 test_addFile_shouldRefresh() async { | 361 test_addFile_shouldRefresh() async { |
362 var a = _p('/test/lib/a.dart'); | 362 var a = _p('/test/lib/a.dart'); |
363 var b = _p('/test/lib/b.dart'); | 363 var b = _p('/test/lib/b.dart'); |
364 | 364 |
365 provider.newFile(a, 'class A {}'); | 365 provider.newFile(a, 'class A {}'); |
366 provider.newFile( | 366 provider.newFile(b, r''' |
367 b, | |
368 r''' | |
369 import 'a.dart'; | 367 import 'a.dart'; |
370 '''); | 368 '''); |
371 | 369 |
372 driver.addFile(a); | 370 driver.addFile(a); |
373 driver.addFile(b); | 371 driver.addFile(b); |
374 | 372 |
375 void assertNumberOfErrorsInB(int n) { | 373 void assertNumberOfErrorsInB(int n) { |
376 var bResult = allResults.singleWhere((r) => r.path == b); | 374 var bResult = allResults.singleWhere((r) => r.path == b); |
377 expect(bResult.errors, hasLength(n)); | 375 expect(bResult.errors, hasLength(n)); |
378 allResults.clear(); | 376 allResults.clear(); |
379 } | 377 } |
380 | 378 |
381 // Initial analysis, 'b' does not use 'a', so there is a hint. | 379 // Initial analysis, 'b' does not use 'a', so there is a hint. |
382 await scheduler.waitForIdle(); | 380 await scheduler.waitForIdle(); |
383 assertNumberOfErrorsInB(1); | 381 assertNumberOfErrorsInB(1); |
384 | 382 |
385 // Update 'b' to use 'a', no more hints. | 383 // Update 'b' to use 'a', no more hints. |
386 provider.newFile( | 384 provider.newFile(b, r''' |
387 b, | |
388 r''' | |
389 import 'a.dart'; | 385 import 'a.dart'; |
390 main() { | 386 main() { |
391 print(A); | 387 print(A); |
392 } | 388 } |
393 '''); | 389 '''); |
394 driver.changeFile(b); | 390 driver.changeFile(b); |
395 await scheduler.waitForIdle(); | 391 await scheduler.waitForIdle(); |
396 assertNumberOfErrorsInB(0); | 392 assertNumberOfErrorsInB(0); |
397 | 393 |
398 // Change 'b' content so that it has a hint. | 394 // Change 'b' content so that it has a hint. |
399 // Remove 'b' and add it again. | 395 // Remove 'b' and add it again. |
400 // The file 'b' must be refreshed, and the hint must be reported. | 396 // The file 'b' must be refreshed, and the hint must be reported. |
401 provider.newFile( | 397 provider.newFile(b, r''' |
402 b, | |
403 r''' | |
404 import 'a.dart'; | 398 import 'a.dart'; |
405 '''); | 399 '''); |
406 driver.removeFile(b); | 400 driver.removeFile(b); |
407 driver.addFile(b); | 401 driver.addFile(b); |
408 await scheduler.waitForIdle(); | 402 await scheduler.waitForIdle(); |
409 assertNumberOfErrorsInB(1); | 403 assertNumberOfErrorsInB(1); |
410 } | 404 } |
411 | 405 |
412 test_addFile_thenRemove() async { | 406 test_addFile_thenRemove() async { |
413 var a = _p('/test/lib/a.dart'); | 407 var a = _p('/test/lib/a.dart'); |
(...skipping 10 matching lines...) Expand all Loading... |
424 | 418 |
425 // Only 'b' has been analyzed, because 'a' was removed before we started. | 419 // Only 'b' has been analyzed, because 'a' was removed before we started. |
426 expect(allResults, hasLength(1)); | 420 expect(allResults, hasLength(1)); |
427 expect(allResults[0].path, b); | 421 expect(allResults[0].path, b); |
428 } | 422 } |
429 | 423 |
430 test_analyze_resolveDirectives() async { | 424 test_analyze_resolveDirectives() async { |
431 var lib = _p('/test/lib.dart'); | 425 var lib = _p('/test/lib.dart'); |
432 var part1 = _p('/test/part1.dart'); | 426 var part1 = _p('/test/part1.dart'); |
433 var part2 = _p('/test/part2.dart'); | 427 var part2 = _p('/test/part2.dart'); |
434 provider.newFile( | 428 provider.newFile(lib, ''' |
435 lib, | |
436 ''' | |
437 library lib; | 429 library lib; |
438 part 'part1.dart'; | 430 part 'part1.dart'; |
439 part 'part2.dart'; | 431 part 'part2.dart'; |
440 '''); | 432 '''); |
441 provider.newFile( | 433 provider.newFile(part1, ''' |
442 part1, | |
443 ''' | |
444 part of lib; | 434 part of lib; |
445 '''); | 435 '''); |
446 provider.newFile( | 436 provider.newFile(part2, ''' |
447 part2, | |
448 ''' | |
449 part of 'lib.dart'; | 437 part of 'lib.dart'; |
450 '''); | 438 '''); |
451 | 439 |
452 AnalysisResult libResult = await driver.getResult(lib); | 440 AnalysisResult libResult = await driver.getResult(lib); |
453 AnalysisResult partResult1 = await driver.getResult(part1); | 441 AnalysisResult partResult1 = await driver.getResult(part1); |
454 AnalysisResult partResult2 = await driver.getResult(part2); | 442 AnalysisResult partResult2 = await driver.getResult(part2); |
455 | 443 |
456 CompilationUnit libUnit = libResult.unit; | 444 CompilationUnit libUnit = libResult.unit; |
457 CompilationUnit partUnit1 = partResult1.unit; | 445 CompilationUnit partUnit1 = partResult1.unit; |
458 CompilationUnit partUnit2 = partResult2.unit; | 446 CompilationUnit partUnit2 = partResult2.unit; |
(...skipping 21 matching lines...) Expand all Loading... |
480 | 468 |
481 { | 469 { |
482 var partOf = partUnit2.directives.single as PartOfDirective; | 470 var partOf = partUnit2.directives.single as PartOfDirective; |
483 expect(partOf.element, libraryElement); | 471 expect(partOf.element, libraryElement); |
484 } | 472 } |
485 } | 473 } |
486 | 474 |
487 test_analyze_resolveDirectives_error_missingLibraryDirective() async { | 475 test_analyze_resolveDirectives_error_missingLibraryDirective() async { |
488 var lib = _p('/test/lib.dart'); | 476 var lib = _p('/test/lib.dart'); |
489 var part = _p('/test/part.dart'); | 477 var part = _p('/test/part.dart'); |
490 provider.newFile( | 478 provider.newFile(lib, ''' |
491 lib, | |
492 ''' | |
493 part 'part.dart'; | 479 part 'part.dart'; |
494 '''); | 480 '''); |
495 provider.newFile( | 481 provider.newFile(part, ''' |
496 part, | |
497 ''' | |
498 part of lib; | 482 part of lib; |
499 '''); | 483 '''); |
500 | 484 |
501 driver.addFile(lib); | 485 driver.addFile(lib); |
502 | 486 |
503 AnalysisResult libResult = await driver.getResult(lib); | 487 AnalysisResult libResult = await driver.getResult(lib); |
504 List<AnalysisError> errors = libResult.errors; | 488 List<AnalysisError> errors = libResult.errors; |
505 if (libResult.unit.element.context.analysisOptions.enableUriInPartOf) { | 489 if (libResult.unit.element.context.analysisOptions.enableUriInPartOf) { |
506 expect(errors, hasLength(1)); | 490 expect(errors, hasLength(1)); |
507 expect(errors[0].errorCode, ResolverErrorCode.PART_OF_UNNAMED_LIBRARY); | 491 expect(errors[0].errorCode, ResolverErrorCode.PART_OF_UNNAMED_LIBRARY); |
508 } else { | 492 } else { |
509 expect(errors, hasLength(1)); | 493 expect(errors, hasLength(1)); |
510 expect(errors[0].errorCode, | 494 expect(errors[0].errorCode, |
511 ResolverErrorCode.MISSING_LIBRARY_DIRECTIVE_WITH_PART); | 495 ResolverErrorCode.MISSING_LIBRARY_DIRECTIVE_WITH_PART); |
512 } | 496 } |
513 } | 497 } |
514 | 498 |
515 test_analyze_resolveDirectives_error_partOfDifferentLibrary_byName() async { | 499 test_analyze_resolveDirectives_error_partOfDifferentLibrary_byName() async { |
516 var lib = _p('/test/lib.dart'); | 500 var lib = _p('/test/lib.dart'); |
517 var part = _p('/test/part.dart'); | 501 var part = _p('/test/part.dart'); |
518 provider.newFile( | 502 provider.newFile(lib, ''' |
519 lib, | |
520 ''' | |
521 library lib; | 503 library lib; |
522 part 'part.dart'; | 504 part 'part.dart'; |
523 '''); | 505 '''); |
524 provider.newFile( | 506 provider.newFile(part, ''' |
525 part, | |
526 ''' | |
527 part of someOtherLib; | 507 part of someOtherLib; |
528 '''); | 508 '''); |
529 | 509 |
530 driver.addFile(lib); | 510 driver.addFile(lib); |
531 | 511 |
532 AnalysisResult libResult = await driver.getResult(lib); | 512 AnalysisResult libResult = await driver.getResult(lib); |
533 List<AnalysisError> errors = libResult.errors; | 513 List<AnalysisError> errors = libResult.errors; |
534 expect(errors, hasLength(1)); | 514 expect(errors, hasLength(1)); |
535 expect(errors[0].errorCode, StaticWarningCode.PART_OF_DIFFERENT_LIBRARY); | 515 expect(errors[0].errorCode, StaticWarningCode.PART_OF_DIFFERENT_LIBRARY); |
536 } | 516 } |
537 | 517 |
538 test_analyze_resolveDirectives_error_partOfDifferentLibrary_byUri() async { | 518 test_analyze_resolveDirectives_error_partOfDifferentLibrary_byUri() async { |
539 var lib = _p('/test/lib.dart'); | 519 var lib = _p('/test/lib.dart'); |
540 var part = _p('/test/part.dart'); | 520 var part = _p('/test/part.dart'); |
541 provider.newFile( | 521 provider.newFile(lib, ''' |
542 lib, | |
543 ''' | |
544 library lib; | 522 library lib; |
545 part 'part.dart'; | 523 part 'part.dart'; |
546 '''); | 524 '''); |
547 provider.newFile( | 525 provider.newFile(part, ''' |
548 part, | |
549 ''' | |
550 part of 'other_lib.dart'; | 526 part of 'other_lib.dart'; |
551 '''); | 527 '''); |
552 | 528 |
553 driver.addFile(lib); | 529 driver.addFile(lib); |
554 | 530 |
555 AnalysisResult libResult = await driver.getResult(lib); | 531 AnalysisResult libResult = await driver.getResult(lib); |
556 List<AnalysisError> errors = libResult.errors; | 532 List<AnalysisError> errors = libResult.errors; |
557 expect(errors, hasLength(1)); | 533 expect(errors, hasLength(1)); |
558 expect(errors[0].errorCode, StaticWarningCode.PART_OF_DIFFERENT_LIBRARY); | 534 expect(errors[0].errorCode, StaticWarningCode.PART_OF_DIFFERENT_LIBRARY); |
559 } | 535 } |
560 | 536 |
561 test_analyze_resolveDirectives_error_partOfNonPart() async { | 537 test_analyze_resolveDirectives_error_partOfNonPart() async { |
562 var lib = _p('/test/lib.dart'); | 538 var lib = _p('/test/lib.dart'); |
563 var part = _p('/test/part.dart'); | 539 var part = _p('/test/part.dart'); |
564 provider.newFile( | 540 provider.newFile(lib, ''' |
565 lib, | |
566 ''' | |
567 library lib; | 541 library lib; |
568 part 'part.dart'; | 542 part 'part.dart'; |
569 '''); | 543 '''); |
570 provider.newFile( | 544 provider.newFile(part, ''' |
571 part, | |
572 ''' | |
573 // no part of directive | 545 // no part of directive |
574 '''); | 546 '''); |
575 | 547 |
576 driver.addFile(lib); | 548 driver.addFile(lib); |
577 | 549 |
578 AnalysisResult libResult = await driver.getResult(lib); | 550 AnalysisResult libResult = await driver.getResult(lib); |
579 List<AnalysisError> errors = libResult.errors; | 551 List<AnalysisError> errors = libResult.errors; |
580 expect(errors, hasLength(1)); | 552 expect(errors, hasLength(1)); |
581 expect(errors[0].errorCode, CompileTimeErrorCode.PART_OF_NON_PART); | 553 expect(errors[0].errorCode, CompileTimeErrorCode.PART_OF_NON_PART); |
582 } | 554 } |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
664 expect(driver.test.priorityResults, isEmpty); | 636 expect(driver.test.priorityResults, isEmpty); |
665 | 637 |
666 // The file is not priority, so its result is not cached. | 638 // The file is not priority, so its result is not cached. |
667 AnalysisResult result2 = await driver.getResult(a); | 639 AnalysisResult result2 = await driver.getResult(a); |
668 expect(result2, isNot(same(result1))); | 640 expect(result2, isNot(same(result1))); |
669 } | 641 } |
670 | 642 |
671 test_changeFile_implicitlyAnalyzed() async { | 643 test_changeFile_implicitlyAnalyzed() async { |
672 var a = _p('/test/lib/a.dart'); | 644 var a = _p('/test/lib/a.dart'); |
673 var b = _p('/test/lib/b.dart'); | 645 var b = _p('/test/lib/b.dart'); |
674 provider.newFile( | 646 provider.newFile(a, r''' |
675 a, | |
676 r''' | |
677 import 'b.dart'; | 647 import 'b.dart'; |
678 var A = B; | 648 var A = B; |
679 '''); | 649 '''); |
680 provider.newFile(b, 'var B = 1;'); | 650 provider.newFile(b, 'var B = 1;'); |
681 | 651 |
682 driver.priorityFiles = [a]; | 652 driver.priorityFiles = [a]; |
683 driver.addFile(a); | 653 driver.addFile(a); |
684 | 654 |
685 // We have a result only for "a". | 655 // We have a result only for "a". |
686 await scheduler.waitForIdle(); | 656 await scheduler.waitForIdle(); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
726 await scheduler.waitForIdle(); | 696 await scheduler.waitForIdle(); |
727 expect(allResults, isEmpty); | 697 expect(allResults, isEmpty); |
728 | 698 |
729 // This should not add "b" to the file state. | 699 // This should not add "b" to the file state. |
730 expect(driver.fsState.knownFilePaths, isNot(contains(b))); | 700 expect(driver.fsState.knownFilePaths, isNot(contains(b))); |
731 } | 701 } |
732 | 702 |
733 test_changeFile_selfConsistent() async { | 703 test_changeFile_selfConsistent() async { |
734 var a = _p('/test/lib/a.dart'); | 704 var a = _p('/test/lib/a.dart'); |
735 var b = _p('/test/lib/b.dart'); | 705 var b = _p('/test/lib/b.dart'); |
736 provider.newFile( | 706 provider.newFile(a, r''' |
737 a, | |
738 r''' | |
739 import 'b.dart'; | 707 import 'b.dart'; |
740 var A1 = 1; | 708 var A1 = 1; |
741 var A2 = B1; | 709 var A2 = B1; |
742 '''); | 710 '''); |
743 provider.newFile( | 711 provider.newFile(b, r''' |
744 b, | |
745 r''' | |
746 import 'a.dart'; | 712 import 'a.dart'; |
747 var B1 = A1; | 713 var B1 = A1; |
748 '''); | 714 '''); |
749 | 715 |
750 driver.priorityFiles = [a, b]; | 716 driver.priorityFiles = [a, b]; |
751 driver.addFile(a); | 717 driver.addFile(a); |
752 driver.addFile(b); | 718 driver.addFile(b); |
753 await scheduler.waitForIdle(); | 719 await scheduler.waitForIdle(); |
754 | 720 |
755 // We have results for both "a" and "b". | 721 // We have results for both "a" and "b". |
756 expect(allResults, hasLength(2)); | 722 expect(allResults, hasLength(2)); |
757 { | 723 { |
758 AnalysisResult ar = allResults.firstWhere((r) => r.path == a); | 724 AnalysisResult ar = allResults.firstWhere((r) => r.path == a); |
759 expect(_getTopLevelVarType(ar.unit, 'A1'), 'int'); | 725 expect(_getTopLevelVarType(ar.unit, 'A1'), 'int'); |
760 expect(_getTopLevelVarType(ar.unit, 'A2'), 'int'); | 726 expect(_getTopLevelVarType(ar.unit, 'A2'), 'int'); |
761 } | 727 } |
762 { | 728 { |
763 AnalysisResult br = allResults.firstWhere((r) => r.path == b); | 729 AnalysisResult br = allResults.firstWhere((r) => r.path == b); |
764 expect(_getTopLevelVarType(br.unit, 'B1'), 'int'); | 730 expect(_getTopLevelVarType(br.unit, 'B1'), 'int'); |
765 } | 731 } |
766 | 732 |
767 // Clear the results and update "a". | 733 // Clear the results and update "a". |
768 allResults.clear(); | 734 allResults.clear(); |
769 provider.updateFile( | 735 provider.updateFile(a, r''' |
770 a, | |
771 r''' | |
772 import 'b.dart'; | 736 import 'b.dart'; |
773 var A1 = 1.2; | 737 var A1 = 1.2; |
774 var A2 = B1; | 738 var A2 = B1; |
775 '''); | 739 '''); |
776 driver.changeFile(a); | 740 driver.changeFile(a); |
777 | 741 |
778 // We again get results for both "a" and "b". | 742 // We again get results for both "a" and "b". |
779 // The results are consistent. | 743 // The results are consistent. |
780 await scheduler.waitForIdle(); | 744 await scheduler.waitForIdle(); |
781 expect(allResults, hasLength(2)); | 745 expect(allResults, hasLength(2)); |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
951 import 'foo.dart'; | 915 import 'foo.dart'; |
952 '''); | 916 '''); |
953 | 917 |
954 AnalysisResult result = await driver.getResult(testFile); | 918 AnalysisResult result = await driver.getResult(testFile); |
955 List<AnalysisError> errors = result.errors; | 919 List<AnalysisError> errors = result.errors; |
956 expect(errors, hasLength(1)); | 920 expect(errors, hasLength(1)); |
957 expect(errors[0].errorCode, CompileTimeErrorCode.URI_DOES_NOT_EXIST); | 921 expect(errors[0].errorCode, CompileTimeErrorCode.URI_DOES_NOT_EXIST); |
958 } | 922 } |
959 | 923 |
960 test_errors_uriDoesNotExist_import_deferred() async { | 924 test_errors_uriDoesNotExist_import_deferred() async { |
961 addTestFile( | 925 addTestFile(r''' |
962 r''' | |
963 import 'foo.dart' deferred as foo; | 926 import 'foo.dart' deferred as foo; |
964 main() { | 927 main() { |
965 foo.loadLibrary(); | 928 foo.loadLibrary(); |
966 } | 929 } |
967 ''', | 930 ''', priority: true); |
968 priority: true); | |
969 | 931 |
970 AnalysisResult result = await driver.getResult(testFile); | 932 AnalysisResult result = await driver.getResult(testFile); |
971 List<AnalysisError> errors = result.errors; | 933 List<AnalysisError> errors = result.errors; |
972 expect(errors, hasLength(1)); | 934 expect(errors, hasLength(1)); |
973 expect(errors[0].errorCode, CompileTimeErrorCode.URI_DOES_NOT_EXIST); | 935 expect(errors[0].errorCode, CompileTimeErrorCode.URI_DOES_NOT_EXIST); |
974 } | 936 } |
975 | 937 |
976 test_errors_uriDoesNotExist_part() async { | 938 test_errors_uriDoesNotExist_part() async { |
977 addTestFile(r''' | 939 addTestFile(r''' |
978 library lib; | 940 library lib; |
979 part 'foo.dart'; | 941 part 'foo.dart'; |
980 '''); | 942 '''); |
981 | 943 |
982 AnalysisResult result = await driver.getResult(testFile); | 944 AnalysisResult result = await driver.getResult(testFile); |
983 List<AnalysisError> errors = result.errors; | 945 List<AnalysisError> errors = result.errors; |
984 expect(errors, hasLength(1)); | 946 expect(errors, hasLength(1)); |
985 expect(errors[0].errorCode, CompileTimeErrorCode.URI_DOES_NOT_EXIST); | 947 expect(errors[0].errorCode, CompileTimeErrorCode.URI_DOES_NOT_EXIST); |
986 } | 948 } |
987 | 949 |
988 test_externalSummaries() async { | 950 test_externalSummaries() async { |
989 var a = _p('/a.dart'); | 951 var a = _p('/a.dart'); |
990 var b = _p('/b.dart'); | 952 var b = _p('/b.dart'); |
991 provider.newFile( | 953 provider.newFile(a, r''' |
992 a, | |
993 r''' | |
994 class A {} | 954 class A {} |
995 '''); | 955 '''); |
996 provider.newFile( | 956 provider.newFile(b, r''' |
997 b, | |
998 r''' | |
999 import 'a.dart'; | 957 import 'a.dart'; |
1000 var a = new A(); | 958 var a = new A(); |
1001 '''); | 959 '''); |
1002 | 960 |
1003 // Prepare the store with a.dart and everything it needs. | 961 // Prepare the store with a.dart and everything it needs. |
1004 SummaryDataStore summaryStore = | 962 SummaryDataStore summaryStore = |
1005 createAnalysisDriver().test.getSummaryStore(a); | 963 createAnalysisDriver().test.getSummaryStore(a); |
1006 | 964 |
1007 // There are at least a.dart and dart:core libraries. | 965 // There are at least a.dart and dart:core libraries. |
1008 String aUri = provider.pathContext.toUri(a).toString(); | 966 String aUri = provider.pathContext.toUri(a).toString(); |
(...skipping 11 matching lines...) Expand all Loading... |
1020 createAnalysisDriver(externalSummaries: summaryStore); | 978 createAnalysisDriver(externalSummaries: summaryStore); |
1021 AnalysisResult result = await driver.getResult(b); | 979 AnalysisResult result = await driver.getResult(b); |
1022 expect(result.errors, isEmpty); | 980 expect(result.errors, isEmpty); |
1023 } | 981 } |
1024 | 982 |
1025 test_generatedFile() async { | 983 test_generatedFile() async { |
1026 Uri uri = Uri.parse('package:aaa/foo.dart'); | 984 Uri uri = Uri.parse('package:aaa/foo.dart'); |
1027 String templatePath = _p('/aaa/lib/foo.dart'); | 985 String templatePath = _p('/aaa/lib/foo.dart'); |
1028 String generatedPath = _p('/generated/aaa/lib/foo.dart'); | 986 String generatedPath = _p('/generated/aaa/lib/foo.dart'); |
1029 | 987 |
1030 provider.newFile( | 988 provider.newFile(templatePath, r''' |
1031 templatePath, | |
1032 r''' | |
1033 a() {} | 989 a() {} |
1034 b() {} | 990 b() {} |
1035 '''); | 991 '''); |
1036 | 992 |
1037 provider.newFile( | 993 provider.newFile(generatedPath, r''' |
1038 generatedPath, | |
1039 r''' | |
1040 aaa() {} | 994 aaa() {} |
1041 bbb() {} | 995 bbb() {} |
1042 '''); | 996 '''); |
1043 | 997 |
1044 Source generatedSource = new _SourceMock(); | 998 Source generatedSource = new _SourceMock(); |
1045 when(generatedSource.uri).thenReturn(uri); | 999 when(generatedSource.uri).thenReturn(uri); |
1046 when(generatedSource.fullName).thenReturn(generatedPath); | 1000 when(generatedSource.fullName).thenReturn(generatedPath); |
1047 | 1001 |
1048 when(generatedUriResolver.resolveAbsolute(uri, uri)) | 1002 when(generatedUriResolver.resolveAbsolute(uri, uri)) |
1049 .thenReturn(generatedSource); | 1003 .thenReturn(generatedSource); |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1172 | 1126 |
1173 AnalysisDriverUnitIndex index = await driver.getIndex(testFile); | 1127 AnalysisDriverUnitIndex index = await driver.getIndex(testFile); |
1174 | 1128 |
1175 int unitId = index.strings.indexOf('package:test/test.dart'); | 1129 int unitId = index.strings.indexOf('package:test/test.dart'); |
1176 int fooId = index.strings.indexOf('foo'); | 1130 int fooId = index.strings.indexOf('foo'); |
1177 expect(unitId, isNonNegative); | 1131 expect(unitId, isNonNegative); |
1178 expect(fooId, isNonNegative); | 1132 expect(fooId, isNonNegative); |
1179 } | 1133 } |
1180 | 1134 |
1181 test_getLibraryByUri_external_resynthesize() async { | 1135 test_getLibraryByUri_external_resynthesize() async { |
1182 provider.newFile( | 1136 provider.newFile(testFile, r''' |
1183 testFile, | |
1184 r''' | |
1185 class Test {} | 1137 class Test {} |
1186 '''); | 1138 '''); |
1187 | 1139 |
1188 // Prepare the store with package:test/test.dart URI. | 1140 // Prepare the store with package:test/test.dart URI. |
1189 SummaryDataStore summaryStore = | 1141 SummaryDataStore summaryStore = |
1190 createAnalysisDriver().test.getSummaryStore(testFile); | 1142 createAnalysisDriver().test.getSummaryStore(testFile); |
1191 | 1143 |
1192 // package:test/test.dart is in the store. | 1144 // package:test/test.dart is in the store. |
1193 String uri = 'package:test/test.dart'; | 1145 String uri = 'package:test/test.dart'; |
1194 expect(summaryStore.unlinkedMap.keys, contains(uri)); | 1146 expect(summaryStore.unlinkedMap.keys, contains(uri)); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1253 | 1205 |
1254 // The same result is also received through the stream. | 1206 // The same result is also received through the stream. |
1255 await scheduler.waitForIdle(); | 1207 await scheduler.waitForIdle(); |
1256 expect(allResults, [result]); | 1208 expect(allResults, [result]); |
1257 } | 1209 } |
1258 | 1210 |
1259 test_getResult_constants_defaultParameterValue_localFunction() async { | 1211 test_getResult_constants_defaultParameterValue_localFunction() async { |
1260 var a = _p('/test/bin/a.dart'); | 1212 var a = _p('/test/bin/a.dart'); |
1261 var b = _p('/test/bin/b.dart'); | 1213 var b = _p('/test/bin/b.dart'); |
1262 provider.newFile(a, 'const C = 42;'); | 1214 provider.newFile(a, 'const C = 42;'); |
1263 provider.newFile( | 1215 provider.newFile(b, r''' |
1264 b, | |
1265 r''' | |
1266 import 'a.dart'; | 1216 import 'a.dart'; |
1267 main() { | 1217 main() { |
1268 foo({int p: C}) {} | 1218 foo({int p: C}) {} |
1269 foo(); | 1219 foo(); |
1270 } | 1220 } |
1271 '''); | 1221 '''); |
1272 driver.addFile(a); | 1222 driver.addFile(a); |
1273 driver.addFile(b); | 1223 driver.addFile(b); |
1274 await scheduler.waitForIdle(); | 1224 await scheduler.waitForIdle(); |
1275 | 1225 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1344 addTestFile(content, priority: true); | 1294 addTestFile(content, priority: true); |
1345 | 1295 |
1346 var result = await driver.getResult(testFile); | 1296 var result = await driver.getResult(testFile); |
1347 expect(result.errors, isEmpty); | 1297 expect(result.errors, isEmpty); |
1348 } | 1298 } |
1349 | 1299 |
1350 test_getResult_importLibrary_thenRemoveIt() async { | 1300 test_getResult_importLibrary_thenRemoveIt() async { |
1351 var a = _p('/test/lib/a.dart'); | 1301 var a = _p('/test/lib/a.dart'); |
1352 var b = _p('/test/lib/b.dart'); | 1302 var b = _p('/test/lib/b.dart'); |
1353 provider.newFile(a, 'class A {}'); | 1303 provider.newFile(a, 'class A {}'); |
1354 provider.newFile( | 1304 provider.newFile(b, r''' |
1355 b, | |
1356 r''' | |
1357 import 'a.dart'; | 1305 import 'a.dart'; |
1358 class B extends A {} | 1306 class B extends A {} |
1359 '''); | 1307 '''); |
1360 | 1308 |
1361 driver.addFile(a); | 1309 driver.addFile(a); |
1362 driver.addFile(b); | 1310 driver.addFile(b); |
1363 await scheduler.waitForIdle(); | 1311 await scheduler.waitForIdle(); |
1364 | 1312 |
1365 // No errors in b.dart | 1313 // No errors in b.dart |
1366 { | 1314 { |
(...skipping 19 matching lines...) Expand all Loading... |
1386 driver.addFile(a); | 1334 driver.addFile(a); |
1387 | 1335 |
1388 // No errors in b.dart again. | 1336 // No errors in b.dart again. |
1389 { | 1337 { |
1390 AnalysisResult result = await driver.getResult(b); | 1338 AnalysisResult result = await driver.getResult(b); |
1391 expect(result.errors, isEmpty); | 1339 expect(result.errors, isEmpty); |
1392 } | 1340 } |
1393 } | 1341 } |
1394 | 1342 |
1395 test_getResult_inferTypes_finalField() async { | 1343 test_getResult_inferTypes_finalField() async { |
1396 addTestFile( | 1344 addTestFile(r''' |
1397 r''' | |
1398 class C { | 1345 class C { |
1399 final f = 42; | 1346 final f = 42; |
1400 } | 1347 } |
1401 ''', | 1348 ''', priority: true); |
1402 priority: true); | |
1403 await scheduler.waitForIdle(); | 1349 await scheduler.waitForIdle(); |
1404 | 1350 |
1405 AnalysisResult result = await driver.getResult(testFile); | 1351 AnalysisResult result = await driver.getResult(testFile); |
1406 expect(_getClassFieldType(result.unit, 'C', 'f'), 'int'); | 1352 expect(_getClassFieldType(result.unit, 'C', 'f'), 'int'); |
1407 } | 1353 } |
1408 | 1354 |
1409 test_getResult_inferTypes_instanceMethod() async { | 1355 test_getResult_inferTypes_instanceMethod() async { |
1410 addTestFile( | 1356 addTestFile(r''' |
1411 r''' | |
1412 class A { | 1357 class A { |
1413 int m(double p) => 1; | 1358 int m(double p) => 1; |
1414 } | 1359 } |
1415 class B extends A { | 1360 class B extends A { |
1416 m(double p) => 2; | 1361 m(double p) => 2; |
1417 } | 1362 } |
1418 ''', | 1363 ''', priority: true); |
1419 priority: true); | |
1420 await scheduler.waitForIdle(); | 1364 await scheduler.waitForIdle(); |
1421 | 1365 |
1422 AnalysisResult result = await driver.getResult(testFile); | 1366 AnalysisResult result = await driver.getResult(testFile); |
1423 expect(_getClassMethodReturnType(result.unit, 'A', 'm'), 'int'); | 1367 expect(_getClassMethodReturnType(result.unit, 'A', 'm'), 'int'); |
1424 expect(_getClassMethodReturnType(result.unit, 'B', 'm'), 'int'); | 1368 expect(_getClassMethodReturnType(result.unit, 'B', 'm'), 'int'); |
1425 } | 1369 } |
1426 | 1370 |
1427 test_getResult_invalid_annotation_functionAsConstructor() async { | 1371 test_getResult_invalid_annotation_functionAsConstructor() async { |
1428 addTestFile( | 1372 addTestFile(r''' |
1429 r''' | |
1430 fff() {} | 1373 fff() {} |
1431 | 1374 |
1432 @fff() | 1375 @fff() |
1433 class C {} | 1376 class C {} |
1434 ''', | 1377 ''', priority: true); |
1435 priority: true); | |
1436 | 1378 |
1437 AnalysisResult result = await driver.getResult(testFile); | 1379 AnalysisResult result = await driver.getResult(testFile); |
1438 ClassDeclaration c = result.unit.declarations[1] as ClassDeclaration; | 1380 ClassDeclaration c = result.unit.declarations[1] as ClassDeclaration; |
1439 Annotation a = c.metadata[0]; | 1381 Annotation a = c.metadata[0]; |
1440 expect(a.name.name, 'fff'); | 1382 expect(a.name.name, 'fff'); |
1441 expect(a.name.staticElement, new isInstanceOf<FunctionElement>()); | 1383 expect(a.name.staticElement, new isInstanceOf<FunctionElement>()); |
1442 } | 1384 } |
1443 | 1385 |
1444 test_getResult_invalidUri() async { | 1386 test_getResult_invalidUri() async { |
1445 String content = r''' | 1387 String content = r''' |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1518 '''; | 1460 '''; |
1519 addTestFile(content); | 1461 addTestFile(content); |
1520 await driver.getResult(testFile); | 1462 await driver.getResult(testFile); |
1521 } | 1463 } |
1522 | 1464 |
1523 test_getResult_mix_fileAndPackageUris() async { | 1465 test_getResult_mix_fileAndPackageUris() async { |
1524 var a = _p('/test/bin/a.dart'); | 1466 var a = _p('/test/bin/a.dart'); |
1525 var b = _p('/test/bin/b.dart'); | 1467 var b = _p('/test/bin/b.dart'); |
1526 var c = _p('/test/lib/c.dart'); | 1468 var c = _p('/test/lib/c.dart'); |
1527 var d = _p('/test/test/d.dart'); | 1469 var d = _p('/test/test/d.dart'); |
1528 provider.newFile( | 1470 provider.newFile(a, r''' |
1529 a, | |
1530 r''' | |
1531 import 'package:test/c.dart'; | 1471 import 'package:test/c.dart'; |
1532 int x = y; | 1472 int x = y; |
1533 '''); | 1473 '''); |
1534 provider.newFile( | 1474 provider.newFile(b, r''' |
1535 b, | |
1536 r''' | |
1537 import '../lib/c.dart'; | 1475 import '../lib/c.dart'; |
1538 int x = y; | 1476 int x = y; |
1539 '''); | 1477 '''); |
1540 provider.newFile( | 1478 provider.newFile(c, r''' |
1541 c, | |
1542 r''' | |
1543 import '../test/d.dart'; | 1479 import '../test/d.dart'; |
1544 var y = z; | 1480 var y = z; |
1545 '''); | 1481 '''); |
1546 provider.newFile( | 1482 provider.newFile(d, r''' |
1547 d, | |
1548 r''' | |
1549 String z = "string"; | 1483 String z = "string"; |
1550 '''); | 1484 '''); |
1551 | 1485 |
1552 driver.addFile(a); | 1486 driver.addFile(a); |
1553 driver.addFile(b); | 1487 driver.addFile(b); |
1554 driver.addFile(c); | 1488 driver.addFile(c); |
1555 driver.addFile(d); | 1489 driver.addFile(d); |
1556 | 1490 |
1557 // Analysis of my_pkg/bin/a.dart produces no error because | 1491 // Analysis of my_pkg/bin/a.dart produces no error because |
1558 // file:///my_pkg/bin/a.dart imports package:my_pkg/c.dart, and | 1492 // file:///my_pkg/bin/a.dart imports package:my_pkg/c.dart, and |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1617 addTestFile(content); | 1551 addTestFile(content); |
1618 // Should not throw exceptions. | 1552 // Should not throw exceptions. |
1619 await driver.getResult(testFile); | 1553 await driver.getResult(testFile); |
1620 } | 1554 } |
1621 | 1555 |
1622 test_getResult_sameFile_twoUris() async { | 1556 test_getResult_sameFile_twoUris() async { |
1623 var a = _p('/test/lib/a.dart'); | 1557 var a = _p('/test/lib/a.dart'); |
1624 var b = _p('/test/lib/b.dart'); | 1558 var b = _p('/test/lib/b.dart'); |
1625 var c = _p('/test/test/c.dart'); | 1559 var c = _p('/test/test/c.dart'); |
1626 provider.newFile(a, 'class A<T> {}'); | 1560 provider.newFile(a, 'class A<T> {}'); |
1627 provider.newFile( | 1561 provider.newFile(b, r''' |
1628 b, | |
1629 r''' | |
1630 import 'a.dart'; | 1562 import 'a.dart'; |
1631 var VB = new A<int>(); | 1563 var VB = new A<int>(); |
1632 '''); | 1564 '''); |
1633 provider.newFile( | 1565 provider.newFile(c, r''' |
1634 c, | |
1635 r''' | |
1636 import '../lib/a.dart'; | 1566 import '../lib/a.dart'; |
1637 var VC = new A<double>(); | 1567 var VC = new A<double>(); |
1638 '''); | 1568 '''); |
1639 | 1569 |
1640 driver.addFile(a); | 1570 driver.addFile(a); |
1641 driver.addFile(b); | 1571 driver.addFile(b); |
1642 await scheduler.waitForIdle(); | 1572 await scheduler.waitForIdle(); |
1643 | 1573 |
1644 { | 1574 { |
1645 AnalysisResult result = await driver.getResult(b); | 1575 AnalysisResult result = await driver.getResult(b); |
1646 expect(_getImportSource(result.unit, 0).uri.toString(), | 1576 expect(_getImportSource(result.unit, 0).uri.toString(), |
1647 'package:test/a.dart'); | 1577 'package:test/a.dart'); |
1648 expect(_getTopLevelVarType(result.unit, 'VB'), 'A<int>'); | 1578 expect(_getTopLevelVarType(result.unit, 'VB'), 'A<int>'); |
1649 } | 1579 } |
1650 | 1580 |
1651 { | 1581 { |
1652 AnalysisResult result = await driver.getResult(c); | 1582 AnalysisResult result = await driver.getResult(c); |
1653 expect(_getImportSource(result.unit, 0).uri, | 1583 expect(_getImportSource(result.unit, 0).uri, |
1654 provider.pathContext.toUri(_p('/test/lib/a.dart'))); | 1584 provider.pathContext.toUri(_p('/test/lib/a.dart'))); |
1655 expect(_getTopLevelVarType(result.unit, 'VC'), 'A<double>'); | 1585 expect(_getTopLevelVarType(result.unit, 'VC'), 'A<double>'); |
1656 } | 1586 } |
1657 } | 1587 } |
1658 | 1588 |
1659 test_getResult_selfConsistent() async { | 1589 test_getResult_selfConsistent() async { |
1660 var a = _p('/test/lib/a.dart'); | 1590 var a = _p('/test/lib/a.dart'); |
1661 var b = _p('/test/lib/b.dart'); | 1591 var b = _p('/test/lib/b.dart'); |
1662 provider.newFile( | 1592 provider.newFile(a, r''' |
1663 a, | |
1664 r''' | |
1665 import 'b.dart'; | 1593 import 'b.dart'; |
1666 var A1 = 1; | 1594 var A1 = 1; |
1667 var A2 = B1; | 1595 var A2 = B1; |
1668 '''); | 1596 '''); |
1669 provider.newFile( | 1597 provider.newFile(b, r''' |
1670 b, | |
1671 r''' | |
1672 import 'a.dart'; | 1598 import 'a.dart'; |
1673 var B1 = A1; | 1599 var B1 = A1; |
1674 '''); | 1600 '''); |
1675 | 1601 |
1676 driver.addFile(a); | 1602 driver.addFile(a); |
1677 driver.addFile(b); | 1603 driver.addFile(b); |
1678 await scheduler.waitForIdle(); | 1604 await scheduler.waitForIdle(); |
1679 | 1605 |
1680 { | 1606 { |
1681 AnalysisResult result = await driver.getResult(a); | 1607 AnalysisResult result = await driver.getResult(a); |
1682 expect(_getTopLevelVarType(result.unit, 'A1'), 'int'); | 1608 expect(_getTopLevelVarType(result.unit, 'A1'), 'int'); |
1683 expect(_getTopLevelVarType(result.unit, 'A2'), 'int'); | 1609 expect(_getTopLevelVarType(result.unit, 'A2'), 'int'); |
1684 } | 1610 } |
1685 | 1611 |
1686 // Update "a" so that "A1" is now "double". | 1612 // Update "a" so that "A1" is now "double". |
1687 // Get result for "a". | 1613 // Get result for "a". |
1688 // | 1614 // |
1689 // We get "double" for "A2", even though "A2" has the type from "b". | 1615 // We get "double" for "A2", even though "A2" has the type from "b". |
1690 // That's because we check for "a" API signature consistency, and because | 1616 // That's because we check for "a" API signature consistency, and because |
1691 // it has changed, we invalidated the dependency cache, relinked libraries | 1617 // it has changed, we invalidated the dependency cache, relinked libraries |
1692 // and recomputed types. | 1618 // and recomputed types. |
1693 provider.updateFile( | 1619 provider.updateFile(a, r''' |
1694 a, | |
1695 r''' | |
1696 import 'b.dart'; | 1620 import 'b.dart'; |
1697 var A1 = 1.2; | 1621 var A1 = 1.2; |
1698 var A2 = B1; | 1622 var A2 = B1; |
1699 '''); | 1623 '''); |
1700 driver.changeFile(a); | 1624 driver.changeFile(a); |
1701 | 1625 |
1702 { | 1626 { |
1703 AnalysisResult result = await driver.getResult(a); | 1627 AnalysisResult result = await driver.getResult(a); |
1704 expect(_getTopLevelVarType(result.unit, 'A1'), 'double'); | 1628 expect(_getTopLevelVarType(result.unit, 'A1'), 'double'); |
1705 expect(_getTopLevelVarType(result.unit, 'A2'), 'double'); | 1629 expect(_getTopLevelVarType(result.unit, 'A2'), 'double'); |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1781 | 1705 |
1782 _assertTopLevelDeclarations( | 1706 _assertTopLevelDeclarations( |
1783 await driver.getTopLevelNameDeclarations('X'), [], []); | 1707 await driver.getTopLevelNameDeclarations('X'), [], []); |
1784 } | 1708 } |
1785 | 1709 |
1786 test_getTopLevelNameDeclarations_parts() async { | 1710 test_getTopLevelNameDeclarations_parts() async { |
1787 var a = _p('/test/lib/a.dart'); | 1711 var a = _p('/test/lib/a.dart'); |
1788 var b = _p('/test/lib/b.dart'); | 1712 var b = _p('/test/lib/b.dart'); |
1789 var c = _p('/test/lib/c.dart'); | 1713 var c = _p('/test/lib/c.dart'); |
1790 | 1714 |
1791 provider.newFile( | 1715 provider.newFile(a, r''' |
1792 a, | |
1793 r''' | |
1794 library lib; | 1716 library lib; |
1795 part 'b.dart'; | 1717 part 'b.dart'; |
1796 part 'c.dart'; | 1718 part 'c.dart'; |
1797 class A {} | 1719 class A {} |
1798 '''); | 1720 '''); |
1799 provider.newFile(b, 'part of lib; class B {}'); | 1721 provider.newFile(b, 'part of lib; class B {}'); |
1800 provider.newFile(c, 'part of lib; class C {}'); | 1722 provider.newFile(c, 'part of lib; class C {}'); |
1801 | 1723 |
1802 driver.addFile(a); | 1724 driver.addFile(a); |
1803 driver.addFile(b); | 1725 driver.addFile(b); |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1889 | 1811 |
1890 // Request of referenced names is not analysis of a file. | 1812 // Request of referenced names is not analysis of a file. |
1891 driver.getFilesReferencingName('X'); | 1813 driver.getFilesReferencingName('X'); |
1892 expect(driver.hasFilesToAnalyze, isFalse); | 1814 expect(driver.hasFilesToAnalyze, isFalse); |
1893 } | 1815 } |
1894 | 1816 |
1895 test_hermetic_modifyLibraryFile_resolvePart() async { | 1817 test_hermetic_modifyLibraryFile_resolvePart() async { |
1896 var a = _p('/test/lib/a.dart'); | 1818 var a = _p('/test/lib/a.dart'); |
1897 var b = _p('/test/lib/b.dart'); | 1819 var b = _p('/test/lib/b.dart'); |
1898 | 1820 |
1899 provider.newFile( | 1821 provider.newFile(a, r''' |
1900 a, | |
1901 r''' | |
1902 library a; | 1822 library a; |
1903 part 'b.dart'; | 1823 part 'b.dart'; |
1904 class C { | 1824 class C { |
1905 int foo; | 1825 int foo; |
1906 } | 1826 } |
1907 '''); | 1827 '''); |
1908 provider.newFile( | 1828 provider.newFile(b, r''' |
1909 b, | |
1910 r''' | |
1911 part of a; | 1829 part of a; |
1912 var c = new C(); | 1830 var c = new C(); |
1913 '''); | 1831 '''); |
1914 | 1832 |
1915 driver.addFile(a); | 1833 driver.addFile(a); |
1916 driver.addFile(b); | 1834 driver.addFile(b); |
1917 | 1835 |
1918 await driver.getResult(b); | 1836 await driver.getResult(b); |
1919 | 1837 |
1920 // Modify the library, but don't notify the driver. | 1838 // Modify the library, but don't notify the driver. |
1921 // The driver should use the previous library content and elements. | 1839 // The driver should use the previous library content and elements. |
1922 provider.newFile( | 1840 provider.newFile(a, r''' |
1923 a, | |
1924 r''' | |
1925 library a; | 1841 library a; |
1926 part 'b.dart'; | 1842 part 'b.dart'; |
1927 class C { | 1843 class C { |
1928 int bar; | 1844 int bar; |
1929 } | 1845 } |
1930 '''); | 1846 '''); |
1931 | 1847 |
1932 var result = await driver.getResult(b); | 1848 var result = await driver.getResult(b); |
1933 var c = _getTopLevelVar(result.unit, 'c'); | 1849 var c = _getTopLevelVar(result.unit, 'c'); |
1934 var typeC = c.element.type as InterfaceType; | 1850 var typeC = c.element.type as InterfaceType; |
(...skipping 19 matching lines...) Expand all Loading... |
1954 AnalysisResult result = await driver.getResult(a); | 1870 AnalysisResult result = await driver.getResult(a); |
1955 expect(result.errors, isEmpty); | 1871 expect(result.errors, isEmpty); |
1956 expect(_getTopLevelVarType(result.unit, 'b'), 'B'); | 1872 expect(_getTopLevelVarType(result.unit, 'b'), 'B'); |
1957 } | 1873 } |
1958 | 1874 |
1959 test_knownFiles() async { | 1875 test_knownFiles() async { |
1960 var a = _p('/test/lib/a.dart'); | 1876 var a = _p('/test/lib/a.dart'); |
1961 var b = _p('/test/lib/b.dart'); | 1877 var b = _p('/test/lib/b.dart'); |
1962 var c = _p('/test/lib/c.dart'); | 1878 var c = _p('/test/lib/c.dart'); |
1963 | 1879 |
1964 provider.newFile( | 1880 provider.newFile(a, r''' |
1965 a, | |
1966 r''' | |
1967 import 'b.dart'; | 1881 import 'b.dart'; |
1968 '''); | 1882 '''); |
1969 provider.newFile(b, ''); | 1883 provider.newFile(b, ''); |
1970 provider.newFile(c, ''); | 1884 provider.newFile(c, ''); |
1971 | 1885 |
1972 driver.addFile(a); | 1886 driver.addFile(a); |
1973 driver.addFile(c); | 1887 driver.addFile(c); |
1974 await scheduler.waitForIdle(); | 1888 await scheduler.waitForIdle(); |
1975 | 1889 |
1976 expect(driver.knownFiles, contains(a)); | 1890 expect(driver.knownFiles, contains(a)); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2028 | 1942 |
2029 ParseResult parseResult = await driver.parseFile(p); | 1943 ParseResult parseResult = await driver.parseFile(p); |
2030 var clazz = parseResult.unit.declarations[0] as ClassDeclaration; | 1944 var clazz = parseResult.unit.declarations[0] as ClassDeclaration; |
2031 expect(clazz.name.name, 'A2'); | 1945 expect(clazz.name.name, 'A2'); |
2032 } | 1946 } |
2033 | 1947 |
2034 test_part_getErrors_afterLibrary() async { | 1948 test_part_getErrors_afterLibrary() async { |
2035 var a = _p('/test/lib/a.dart'); | 1949 var a = _p('/test/lib/a.dart'); |
2036 var b = _p('/test/lib/b.dart'); | 1950 var b = _p('/test/lib/b.dart'); |
2037 var c = _p('/test/lib/c.dart'); | 1951 var c = _p('/test/lib/c.dart'); |
2038 provider.newFile( | 1952 provider.newFile(a, r''' |
2039 a, | |
2040 r''' | |
2041 library a; | 1953 library a; |
2042 import 'b.dart'; | 1954 import 'b.dart'; |
2043 part 'c.dart'; | 1955 part 'c.dart'; |
2044 class A {} | 1956 class A {} |
2045 var c = new C(); | 1957 var c = new C(); |
2046 '''); | 1958 '''); |
2047 provider.newFile(b, 'class B {}'); | 1959 provider.newFile(b, 'class B {}'); |
2048 provider.newFile( | 1960 provider.newFile(c, r''' |
2049 c, | |
2050 r''' | |
2051 part of a; | 1961 part of a; |
2052 class C {} | 1962 class C {} |
2053 var a = new A(); | 1963 var a = new A(); |
2054 var b = new B(); | 1964 var b = new B(); |
2055 '''); | 1965 '''); |
2056 | 1966 |
2057 driver.addFile(a); | 1967 driver.addFile(a); |
2058 driver.addFile(b); | 1968 driver.addFile(b); |
2059 driver.addFile(c); | 1969 driver.addFile(c); |
2060 | 1970 |
2061 // Process a.dart so that we know that it's a library for c.dart later. | 1971 // Process a.dart so that we know that it's a library for c.dart later. |
2062 { | 1972 { |
2063 ErrorsResult result = await driver.getErrors(a); | 1973 ErrorsResult result = await driver.getErrors(a); |
2064 expect(result.errors, isEmpty); | 1974 expect(result.errors, isEmpty); |
2065 } | 1975 } |
2066 | 1976 |
2067 // c.dart does not have errors in the context of a.dart | 1977 // c.dart does not have errors in the context of a.dart |
2068 { | 1978 { |
2069 ErrorsResult result = await driver.getErrors(c); | 1979 ErrorsResult result = await driver.getErrors(c); |
2070 expect(result.errors, isEmpty); | 1980 expect(result.errors, isEmpty); |
2071 } | 1981 } |
2072 } | 1982 } |
2073 | 1983 |
2074 test_part_getErrors_beforeLibrary() async { | 1984 test_part_getErrors_beforeLibrary() async { |
2075 var a = _p('/test/lib/a.dart'); | 1985 var a = _p('/test/lib/a.dart'); |
2076 var b = _p('/test/lib/b.dart'); | 1986 var b = _p('/test/lib/b.dart'); |
2077 var c = _p('/test/lib/c.dart'); | 1987 var c = _p('/test/lib/c.dart'); |
2078 provider.newFile( | 1988 provider.newFile(a, r''' |
2079 a, | |
2080 r''' | |
2081 library a; | 1989 library a; |
2082 import 'b.dart'; | 1990 import 'b.dart'; |
2083 part 'c.dart'; | 1991 part 'c.dart'; |
2084 class A {} | 1992 class A {} |
2085 var c = new C(); | 1993 var c = new C(); |
2086 '''); | 1994 '''); |
2087 provider.newFile(b, 'class B {}'); | 1995 provider.newFile(b, 'class B {}'); |
2088 provider.newFile( | 1996 provider.newFile(c, r''' |
2089 c, | |
2090 r''' | |
2091 part of a; | 1997 part of a; |
2092 class C {} | 1998 class C {} |
2093 var a = new A(); | 1999 var a = new A(); |
2094 var b = new B(); | 2000 var b = new B(); |
2095 '''); | 2001 '''); |
2096 | 2002 |
2097 driver.addFile(a); | 2003 driver.addFile(a); |
2098 driver.addFile(b); | 2004 driver.addFile(b); |
2099 driver.addFile(c); | 2005 driver.addFile(c); |
2100 | 2006 |
2101 // c.dart is resolve in the context of a.dart, so have no errors | 2007 // c.dart is resolve in the context of a.dart, so have no errors |
2102 { | 2008 { |
2103 ErrorsResult result = await driver.getErrors(c); | 2009 ErrorsResult result = await driver.getErrors(c); |
2104 expect(result.errors, isEmpty); | 2010 expect(result.errors, isEmpty); |
2105 } | 2011 } |
2106 } | 2012 } |
2107 | 2013 |
2108 test_part_getResult_afterLibrary() async { | 2014 test_part_getResult_afterLibrary() async { |
2109 var a = _p('/test/lib/a.dart'); | 2015 var a = _p('/test/lib/a.dart'); |
2110 var b = _p('/test/lib/b.dart'); | 2016 var b = _p('/test/lib/b.dart'); |
2111 var c = _p('/test/lib/c.dart'); | 2017 var c = _p('/test/lib/c.dart'); |
2112 provider.newFile( | 2018 provider.newFile(a, r''' |
2113 a, | |
2114 r''' | |
2115 library a; | 2019 library a; |
2116 import 'b.dart'; | 2020 import 'b.dart'; |
2117 part 'c.dart'; | 2021 part 'c.dart'; |
2118 class A {} | 2022 class A {} |
2119 var c = new C(); | 2023 var c = new C(); |
2120 '''); | 2024 '''); |
2121 provider.newFile(b, 'class B {}'); | 2025 provider.newFile(b, 'class B {}'); |
2122 provider.newFile( | 2026 provider.newFile(c, r''' |
2123 c, | |
2124 r''' | |
2125 part of a; | 2027 part of a; |
2126 class C {} | 2028 class C {} |
2127 var a = new A(); | 2029 var a = new A(); |
2128 var b = new B(); | 2030 var b = new B(); |
2129 '''); | 2031 '''); |
2130 | 2032 |
2131 driver.addFile(a); | 2033 driver.addFile(a); |
2132 driver.addFile(b); | 2034 driver.addFile(b); |
2133 driver.addFile(c); | 2035 driver.addFile(c); |
2134 | 2036 |
(...skipping 10 matching lines...) Expand all Loading... |
2145 expect(result.errors, isEmpty); | 2047 expect(result.errors, isEmpty); |
2146 expect(_getTopLevelVarType(result.unit, 'a'), 'A'); | 2048 expect(_getTopLevelVarType(result.unit, 'a'), 'A'); |
2147 expect(_getTopLevelVarType(result.unit, 'b'), 'B'); | 2049 expect(_getTopLevelVarType(result.unit, 'b'), 'B'); |
2148 } | 2050 } |
2149 } | 2051 } |
2150 | 2052 |
2151 test_part_getResult_beforeLibrary() async { | 2053 test_part_getResult_beforeLibrary() async { |
2152 var a = _p('/test/lib/a.dart'); | 2054 var a = _p('/test/lib/a.dart'); |
2153 var b = _p('/test/lib/b.dart'); | 2055 var b = _p('/test/lib/b.dart'); |
2154 var c = _p('/test/lib/c.dart'); | 2056 var c = _p('/test/lib/c.dart'); |
2155 provider.newFile( | 2057 provider.newFile(a, r''' |
2156 a, | |
2157 r''' | |
2158 library a; | 2058 library a; |
2159 import 'b.dart'; | 2059 import 'b.dart'; |
2160 part 'c.dart'; | 2060 part 'c.dart'; |
2161 class A {} | 2061 class A {} |
2162 var c = new C(); | 2062 var c = new C(); |
2163 '''); | 2063 '''); |
2164 provider.newFile(b, 'class B {}'); | 2064 provider.newFile(b, 'class B {}'); |
2165 provider.newFile( | 2065 provider.newFile(c, r''' |
2166 c, | |
2167 r''' | |
2168 part of a; | 2066 part of a; |
2169 class C {} | 2067 class C {} |
2170 var a = new A(); | 2068 var a = new A(); |
2171 var b = new B(); | 2069 var b = new B(); |
2172 '''); | 2070 '''); |
2173 | 2071 |
2174 driver.addFile(a); | 2072 driver.addFile(a); |
2175 driver.addFile(b); | 2073 driver.addFile(b); |
2176 driver.addFile(c); | 2074 driver.addFile(c); |
2177 | 2075 |
2178 // b.dart will be analyzed after a.dart is analyzed. | 2076 // b.dart will be analyzed after a.dart is analyzed. |
2179 // So, A and B references are resolved. | 2077 // So, A and B references are resolved. |
2180 AnalysisResult result = await driver.getResult(c); | 2078 AnalysisResult result = await driver.getResult(c); |
2181 expect(result.errors, isEmpty); | 2079 expect(result.errors, isEmpty); |
2182 expect(_getTopLevelVarType(result.unit, 'a'), 'A'); | 2080 expect(_getTopLevelVarType(result.unit, 'a'), 'A'); |
2183 expect(_getTopLevelVarType(result.unit, 'b'), 'B'); | 2081 expect(_getTopLevelVarType(result.unit, 'b'), 'B'); |
2184 } | 2082 } |
2185 | 2083 |
2186 test_part_getResult_noLibrary() async { | 2084 test_part_getResult_noLibrary() async { |
2187 var c = _p('/test/lib/c.dart'); | 2085 var c = _p('/test/lib/c.dart'); |
2188 provider.newFile( | 2086 provider.newFile(c, r''' |
2189 c, | |
2190 r''' | |
2191 part of a; | 2087 part of a; |
2192 class C {} | 2088 class C {} |
2193 var a = new A(); | 2089 var a = new A(); |
2194 var b = new B(); | 2090 var b = new B(); |
2195 '''); | 2091 '''); |
2196 | 2092 |
2197 driver.addFile(c); | 2093 driver.addFile(c); |
2198 | 2094 |
2199 // There is no library which c.dart is a part of, so it has unresolved | 2095 // There is no library which c.dart is a part of, so it has unresolved |
2200 // A and B references. | 2096 // A and B references. |
2201 AnalysisResult result = await driver.getResult(c); | 2097 AnalysisResult result = await driver.getResult(c); |
2202 expect(result.errors, isNotEmpty); | 2098 expect(result.errors, isNotEmpty); |
2203 expect(result.unit, isNotNull); | 2099 expect(result.unit, isNotNull); |
2204 } | 2100 } |
2205 | 2101 |
2206 test_part_results_afterLibrary() async { | 2102 test_part_results_afterLibrary() async { |
2207 var a = _p('/test/lib/a.dart'); | 2103 var a = _p('/test/lib/a.dart'); |
2208 var b = _p('/test/lib/b.dart'); | 2104 var b = _p('/test/lib/b.dart'); |
2209 var c = _p('/test/lib/c.dart'); | 2105 var c = _p('/test/lib/c.dart'); |
2210 provider.newFile( | 2106 provider.newFile(a, r''' |
2211 a, | |
2212 r''' | |
2213 library a; | 2107 library a; |
2214 import 'b.dart'; | 2108 import 'b.dart'; |
2215 part 'c.dart'; | 2109 part 'c.dart'; |
2216 class A {} | 2110 class A {} |
2217 var c = new C(); | 2111 var c = new C(); |
2218 '''); | 2112 '''); |
2219 provider.newFile(b, 'class B {}'); | 2113 provider.newFile(b, 'class B {}'); |
2220 provider.newFile( | 2114 provider.newFile(c, r''' |
2221 c, | |
2222 r''' | |
2223 part of a; | 2115 part of a; |
2224 class C {} | 2116 class C {} |
2225 var a = new A(); | 2117 var a = new A(); |
2226 var b = new B(); | 2118 var b = new B(); |
2227 '''); | 2119 '''); |
2228 | 2120 |
2229 // The order is important for creating the test case. | 2121 // The order is important for creating the test case. |
2230 driver.addFile(a); | 2122 driver.addFile(a); |
2231 driver.addFile(b); | 2123 driver.addFile(b); |
2232 driver.addFile(c); | 2124 driver.addFile(c); |
(...skipping 19 matching lines...) Expand all Loading... |
2252 AnalysisResult result = allResults.lastWhere((r) => r.path == c); | 2144 AnalysisResult result = allResults.lastWhere((r) => r.path == c); |
2253 expect(result.errors, isNotEmpty); | 2145 expect(result.errors, isNotEmpty); |
2254 expect(result.unit, isNull); | 2146 expect(result.unit, isNull); |
2255 } | 2147 } |
2256 } | 2148 } |
2257 | 2149 |
2258 test_part_results_beforeLibrary() async { | 2150 test_part_results_beforeLibrary() async { |
2259 var a = _p('/test/lib/a.dart'); | 2151 var a = _p('/test/lib/a.dart'); |
2260 var b = _p('/test/lib/b.dart'); | 2152 var b = _p('/test/lib/b.dart'); |
2261 var c = _p('/test/lib/c.dart'); | 2153 var c = _p('/test/lib/c.dart'); |
2262 provider.newFile( | 2154 provider.newFile(a, r''' |
2263 a, | |
2264 r''' | |
2265 library a; | 2155 library a; |
2266 import 'b.dart'; | 2156 import 'b.dart'; |
2267 part 'c.dart'; | 2157 part 'c.dart'; |
2268 class A {} | 2158 class A {} |
2269 var c = new C(); | 2159 var c = new C(); |
2270 '''); | 2160 '''); |
2271 provider.newFile(b, 'class B {}'); | 2161 provider.newFile(b, 'class B {}'); |
2272 provider.newFile( | 2162 provider.newFile(c, r''' |
2273 c, | |
2274 r''' | |
2275 part of a; | 2163 part of a; |
2276 class C {} | 2164 class C {} |
2277 var a = new A(); | 2165 var a = new A(); |
2278 var b = new B(); | 2166 var b = new B(); |
2279 '''); | 2167 '''); |
2280 | 2168 |
2281 // The order is important for creating the test case. | 2169 // The order is important for creating the test case. |
2282 driver.addFile(c); | 2170 driver.addFile(c); |
2283 driver.addFile(a); | 2171 driver.addFile(a); |
2284 driver.addFile(b); | 2172 driver.addFile(b); |
2285 | 2173 |
2286 await scheduler.waitForIdle(); | 2174 await scheduler.waitForIdle(); |
2287 | 2175 |
2288 // c.dart was added before a.dart, so we attempt to analyze it before | 2176 // c.dart was added before a.dart, so we attempt to analyze it before |
2289 // a.dart, but we cannot find the library for it, so we delay analysis | 2177 // a.dart, but we cannot find the library for it, so we delay analysis |
2290 // until all other files are analyzed, including a.dart, after which we | 2178 // until all other files are analyzed, including a.dart, after which we |
2291 // analyze the delayed parts. | 2179 // analyze the delayed parts. |
2292 AnalysisResult result = allResults.lastWhere((r) => r.path == c); | 2180 AnalysisResult result = allResults.lastWhere((r) => r.path == c); |
2293 expect(result.errors, isEmpty); | 2181 expect(result.errors, isEmpty); |
2294 expect(result.unit, isNull); | 2182 expect(result.unit, isNull); |
2295 } | 2183 } |
2296 | 2184 |
2297 test_part_results_noLibrary() async { | 2185 test_part_results_noLibrary() async { |
2298 var c = _p('/test/lib/c.dart'); | 2186 var c = _p('/test/lib/c.dart'); |
2299 provider.newFile( | 2187 provider.newFile(c, r''' |
2300 c, | |
2301 r''' | |
2302 part of a; | 2188 part of a; |
2303 class C {} | 2189 class C {} |
2304 var a = new A(); | 2190 var a = new A(); |
2305 var b = new B(); | 2191 var b = new B(); |
2306 '''); | 2192 '''); |
2307 | 2193 |
2308 driver.addFile(c); | 2194 driver.addFile(c); |
2309 | 2195 |
2310 await scheduler.waitForIdle(); | 2196 await scheduler.waitForIdle(); |
2311 | 2197 |
2312 // There is no library which c.dart is a part of, so it has unresolved | 2198 // There is no library which c.dart is a part of, so it has unresolved |
2313 // A and B references. | 2199 // A and B references. |
2314 AnalysisResult result = allResults.lastWhere((r) => r.path == c); | 2200 AnalysisResult result = allResults.lastWhere((r) => r.path == c); |
2315 expect(result.errors, isNotEmpty); | 2201 expect(result.errors, isNotEmpty); |
2316 expect(result.unit, isNull); | 2202 expect(result.unit, isNull); |
2317 } | 2203 } |
2318 | 2204 |
2319 test_part_results_priority_beforeLibrary() async { | 2205 test_part_results_priority_beforeLibrary() async { |
2320 var a = _p('/test/lib/a.dart'); | 2206 var a = _p('/test/lib/a.dart'); |
2321 var b = _p('/test/lib/b.dart'); | 2207 var b = _p('/test/lib/b.dart'); |
2322 var c = _p('/test/lib/c.dart'); | 2208 var c = _p('/test/lib/c.dart'); |
2323 provider.newFile( | 2209 provider.newFile(a, r''' |
2324 a, | |
2325 r''' | |
2326 library a; | 2210 library a; |
2327 import 'b.dart'; | 2211 import 'b.dart'; |
2328 part 'c.dart'; | 2212 part 'c.dart'; |
2329 class A {} | 2213 class A {} |
2330 var c = new C(); | 2214 var c = new C(); |
2331 '''); | 2215 '''); |
2332 provider.newFile(b, 'class B {}'); | 2216 provider.newFile(b, 'class B {}'); |
2333 provider.newFile( | 2217 provider.newFile(c, r''' |
2334 c, | |
2335 r''' | |
2336 part of a; | 2218 part of a; |
2337 class C {} | 2219 class C {} |
2338 var a = new A(); | 2220 var a = new A(); |
2339 var b = new B(); | 2221 var b = new B(); |
2340 '''); | 2222 '''); |
2341 | 2223 |
2342 // The order is important for creating the test case. | 2224 // The order is important for creating the test case. |
2343 driver.priorityFiles = [c]; | 2225 driver.priorityFiles = [c]; |
2344 driver.addFile(c); | 2226 driver.addFile(c); |
2345 driver.addFile(a); | 2227 driver.addFile(a); |
2346 driver.addFile(b); | 2228 driver.addFile(b); |
2347 | 2229 |
2348 await scheduler.waitForIdle(); | 2230 await scheduler.waitForIdle(); |
2349 | 2231 |
2350 // c.dart was added before a.dart, so we attempt to analyze it before | 2232 // c.dart was added before a.dart, so we attempt to analyze it before |
2351 // a.dart, but we cannot find the library for it, so we delay analysis | 2233 // a.dart, but we cannot find the library for it, so we delay analysis |
2352 // until all other files are analyzed, including a.dart, after which we | 2234 // until all other files are analyzed, including a.dart, after which we |
2353 // analyze the delayed parts. | 2235 // analyze the delayed parts. |
2354 AnalysisResult result = allResults.lastWhere((r) => r.path == c); | 2236 AnalysisResult result = allResults.lastWhere((r) => r.path == c); |
2355 expect(result.errors, isEmpty); | 2237 expect(result.errors, isEmpty); |
2356 expect(result.unit, isNotNull); | 2238 expect(result.unit, isNotNull); |
2357 } | 2239 } |
2358 | 2240 |
2359 test_removeFile_changeFile_implicitlyAnalyzed() async { | 2241 test_removeFile_changeFile_implicitlyAnalyzed() async { |
2360 var a = _p('/test/lib/a.dart'); | 2242 var a = _p('/test/lib/a.dart'); |
2361 var b = _p('/test/lib/b.dart'); | 2243 var b = _p('/test/lib/b.dart'); |
2362 provider.newFile( | 2244 provider.newFile(a, r''' |
2363 a, | |
2364 r''' | |
2365 import 'b.dart'; | 2245 import 'b.dart'; |
2366 var A = B; | 2246 var A = B; |
2367 '''); | 2247 '''); |
2368 provider.newFile(b, 'var B = 1;'); | 2248 provider.newFile(b, 'var B = 1;'); |
2369 | 2249 |
2370 driver.priorityFiles = [a, b]; | 2250 driver.priorityFiles = [a, b]; |
2371 driver.addFile(a); | 2251 driver.addFile(a); |
2372 driver.addFile(b); | 2252 driver.addFile(b); |
2373 | 2253 |
2374 // We have results for both "a" and "b". | 2254 // We have results for both "a" and "b". |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2442 allResults.clear(); | 2322 allResults.clear(); |
2443 } | 2323 } |
2444 | 2324 |
2445 test_results_order() async { | 2325 test_results_order() async { |
2446 var a = _p('/test/lib/a.dart'); | 2326 var a = _p('/test/lib/a.dart'); |
2447 var b = _p('/test/lib/b.dart'); | 2327 var b = _p('/test/lib/b.dart'); |
2448 var c = _p('/test/lib/c.dart'); | 2328 var c = _p('/test/lib/c.dart'); |
2449 var d = _p('/test/lib/d.dart'); | 2329 var d = _p('/test/lib/d.dart'); |
2450 var e = _p('/test/lib/e.dart'); | 2330 var e = _p('/test/lib/e.dart'); |
2451 var f = _p('/test/lib/f.dart'); | 2331 var f = _p('/test/lib/f.dart'); |
2452 provider.newFile( | 2332 provider.newFile(a, r''' |
2453 a, | |
2454 r''' | |
2455 import 'd.dart'; | 2333 import 'd.dart'; |
2456 '''); | 2334 '''); |
2457 provider.newFile(b, ''); | 2335 provider.newFile(b, ''); |
2458 provider.newFile( | 2336 provider.newFile(c, r''' |
2459 c, | |
2460 r''' | |
2461 import 'd.dart'; | 2337 import 'd.dart'; |
2462 '''); | 2338 '''); |
2463 provider.newFile( | 2339 provider.newFile(d, r''' |
2464 d, | |
2465 r''' | |
2466 import 'b.dart'; | 2340 import 'b.dart'; |
2467 '''); | 2341 '''); |
2468 provider.newFile( | 2342 provider.newFile(e, r''' |
2469 e, | |
2470 r''' | |
2471 export 'b.dart'; | 2343 export 'b.dart'; |
2472 '''); | 2344 '''); |
2473 provider.newFile( | 2345 provider.newFile(f, r''' |
2474 f, | |
2475 r''' | |
2476 import 'e.dart'; | 2346 import 'e.dart'; |
2477 class F extends X {} | 2347 class F extends X {} |
2478 '''); | 2348 '''); |
2479 | 2349 |
2480 driver.addFile(a); | 2350 driver.addFile(a); |
2481 driver.addFile(b); | 2351 driver.addFile(b); |
2482 driver.addFile(c); | 2352 driver.addFile(c); |
2483 driver.addFile(d); | 2353 driver.addFile(d); |
2484 driver.addFile(e); | 2354 driver.addFile(e); |
2485 driver.addFile(f); | 2355 driver.addFile(f); |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2786 expect(() { | 2656 expect(() { |
2787 driver.changeFile(path); | 2657 driver.changeFile(path); |
2788 }, throwsStateError); | 2658 }, throwsStateError); |
2789 } | 2659 } |
2790 | 2660 |
2791 test_getResult_libraryUnits() async { | 2661 test_getResult_libraryUnits() async { |
2792 var lib = _p('/lib.dart'); | 2662 var lib = _p('/lib.dart'); |
2793 var part1 = _p('/part1.dart'); | 2663 var part1 = _p('/part1.dart'); |
2794 var part2 = _p('/part2.dart'); | 2664 var part2 = _p('/part2.dart'); |
2795 | 2665 |
2796 provider.newFile( | 2666 provider.newFile(lib, r''' |
2797 lib, | |
2798 r''' | |
2799 library test; | 2667 library test; |
2800 part 'part1.dart'; | 2668 part 'part1.dart'; |
2801 part 'part2.dart'; | 2669 part 'part2.dart'; |
2802 '''); | 2670 '''); |
2803 provider.newFile(part1, 'part of test; class A {}'); | 2671 provider.newFile(part1, 'part of test; class A {}'); |
2804 provider.newFile(part2, 'part of test; class B {}'); | 2672 provider.newFile(part2, 'part of test; class B {}'); |
2805 | 2673 |
2806 driver.addFile(lib); | 2674 driver.addFile(lib); |
2807 driver.addFile(part1); | 2675 driver.addFile(part1); |
2808 driver.addFile(part2); | 2676 driver.addFile(part2); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2857 var path = _p('/test.dart'); | 2725 var path = _p('/test.dart'); |
2858 expect(() { | 2726 expect(() { |
2859 driver.removeFile(path); | 2727 driver.removeFile(path); |
2860 }, throwsStateError); | 2728 }, throwsStateError); |
2861 } | 2729 } |
2862 | 2730 |
2863 String _p(String path) => provider.convertPath(path); | 2731 String _p(String path) => provider.convertPath(path); |
2864 } | 2732 } |
2865 | 2733 |
2866 class _SourceMock extends TypedMock implements Source {} | 2734 class _SourceMock extends TypedMock implements Source {} |
OLD | NEW |