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

Side by Side Diff: pkg/analyzer/test/src/task/dart_test.dart

Issue 1031283002: BuildLibraryConstructorsTask to build all constructors of all library classes. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/analyzer/lib/task/dart.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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.src.task.dart_test; 5 library test.src.task.dart_test;
6 6
7 import 'package:analyzer/file_system/file_system.dart'; 7 import 'package:analyzer/file_system/file_system.dart';
8 import 'package:analyzer/file_system/memory_file_system.dart'; 8 import 'package:analyzer/file_system/memory_file_system.dart';
9 import 'package:analyzer/src/context/cache.dart'; 9 import 'package:analyzer/src/context/cache.dart';
10 import 'package:analyzer/src/generated/ast.dart'; 10 import 'package:analyzer/src/generated/ast.dart';
(...skipping 20 matching lines...) Expand all
31 31
32 main() { 32 main() {
33 groupSep = ' | '; 33 groupSep = ' | ';
34 runReflectiveTests(BuildClassConstructorsTaskTest); 34 runReflectiveTests(BuildClassConstructorsTaskTest);
35 runReflectiveTests(BuildCompilationUnitElementTaskTest); 35 runReflectiveTests(BuildCompilationUnitElementTaskTest);
36 runReflectiveTests(BuildDirectiveElementsTaskTest); 36 runReflectiveTests(BuildDirectiveElementsTaskTest);
37 runReflectiveTests(BuildEnumMemberElementsTaskTest); 37 runReflectiveTests(BuildEnumMemberElementsTaskTest);
38 runReflectiveTests(BuildExportSourceClosureTaskTest); 38 runReflectiveTests(BuildExportSourceClosureTaskTest);
39 runReflectiveTests(BuildExportNamespaceTaskTest); 39 runReflectiveTests(BuildExportNamespaceTaskTest);
40 runReflectiveTests(BuildFunctionTypeAliasesTaskTest); 40 runReflectiveTests(BuildFunctionTypeAliasesTaskTest);
41 runReflectiveTests(BuildLibraryConstructorsTaskTest);
41 runReflectiveTests(BuildLibraryElementTaskTest); 42 runReflectiveTests(BuildLibraryElementTaskTest);
42 runReflectiveTests(BuildPublicNamespaceTaskTest); 43 runReflectiveTests(BuildPublicNamespaceTaskTest);
43 runReflectiveTests(BuildTypeProviderTaskTest); 44 runReflectiveTests(BuildTypeProviderTaskTest);
44 runReflectiveTests(ParseDartTaskTest); 45 runReflectiveTests(ParseDartTaskTest);
45 runReflectiveTests(ResolveUnitTypeNamesTaskTest); 46 runReflectiveTests(ResolveUnitTypeNamesTaskTest);
46 runReflectiveTests(ResolveLibraryTypeNamesTaskTest); 47 runReflectiveTests(ResolveLibraryTypeNamesTaskTest);
47 runReflectiveTests(ScanDartTaskTest); 48 runReflectiveTests(ScanDartTaskTest);
48 } 49 }
49 50
50 @reflectiveTest 51 @reflectiveTest
(...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after
691 _computeResult(target, BUILD_FUNCTION_TYPE_ALIASES_ERRORS); 692 _computeResult(target, BUILD_FUNCTION_TYPE_ALIASES_ERRORS);
692 expect(task, new isInstanceOf<BuildFunctionTypeAliasesTask>()); 693 expect(task, new isInstanceOf<BuildFunctionTypeAliasesTask>());
693 // validate 694 // validate
694 _fillErrorListener(BUILD_FUNCTION_TYPE_ALIASES_ERRORS); 695 _fillErrorListener(BUILD_FUNCTION_TYPE_ALIASES_ERRORS);
695 errorListener 696 errorListener
696 .assertErrorsWithCodes(<ErrorCode>[StaticWarningCode.UNDEFINED_CLASS]); 697 .assertErrorsWithCodes(<ErrorCode>[StaticWarningCode.UNDEFINED_CLASS]);
697 } 698 }
698 } 699 }
699 700
700 @reflectiveTest 701 @reflectiveTest
702 class BuildLibraryConstructorsTaskTest extends _AbstractDartTaskTest {
703 test_perform() {
704 Source source = _newSource('/test.dart', '''
705 class B {
706 B(int i);
707 }
708 class M1 {}
709 class M2 {}
710
711 class C2 = C1 with M2;
712 class C1 = B with M1;
713 class C3 = B with M2;
714 ''');
715 _computeResult(source, LIBRARY_ELEMENT6);
716 expect(task, new isInstanceOf<BuildLibraryConstructorsTask>());
717 LibraryElement libraryElement = outputs[LIBRARY_ELEMENT6];
718 // C1
719 {
720 ClassElement classElement = libraryElement.getType('C2');
721 List<ConstructorElement> constructors = classElement.constructors;
722 expect(constructors, hasLength(1));
723 expect(constructors[0].parameters, hasLength(1));
724 }
725 // C3
726 {
727 ClassElement classElement = libraryElement.getType('C3');
728 List<ConstructorElement> constructors = classElement.constructors;
729 expect(constructors, hasLength(1));
730 expect(constructors[0].parameters, hasLength(1));
731 }
732 }
733 }
734
735 @reflectiveTest
701 class BuildLibraryElementTaskTest extends _AbstractDartTaskTest { 736 class BuildLibraryElementTaskTest extends _AbstractDartTaskTest {
702 Source librarySource; 737 Source librarySource;
703 CompilationUnit libraryUnit; 738 CompilationUnit libraryUnit;
704 CompilationUnitElement libraryUnitElement; 739 CompilationUnitElement libraryUnitElement;
705 List<CompilationUnit> partUnits; 740 List<CompilationUnit> partUnits;
706 741
707 LibraryElement libraryElement; 742 LibraryElement libraryElement;
708 743
709 test_constructor() { 744 test_constructor() {
710 BuildLibraryElementTask task = 745 BuildLibraryElementTask task =
(...skipping 29 matching lines...) Expand all
740 part 'part1.dart'; 775 part 'part1.dart';
741 part 'part2.dart'; 776 part 'part2.dart';
742 ''', 777 ''',
743 '/part1.dart': ''' 778 '/part1.dart': '''
744 part of lib; 779 part of lib;
745 ''', 780 ''',
746 '/part2.dart': ''' 781 '/part2.dart': '''
747 part of lib; 782 part of lib;
748 ''' 783 '''
749 }); 784 });
750 expect(outputs, hasLength(4)); 785 expect(outputs, hasLength(5));
751 // simple outputs 786 // simple outputs
752 expect(outputs[BUILD_LIBRARY_ERRORS], isEmpty); 787 expect(outputs[BUILD_LIBRARY_ERRORS], isEmpty);
753 expect(outputs[IS_LAUNCHABLE], isFalse); 788 expect(outputs[IS_LAUNCHABLE], isFalse);
754 expect(outputs[HAS_HTML_IMPORT], isFalse); 789 expect(outputs[HAS_HTML_IMPORT], isFalse);
755 // LibraryElement output 790 // LibraryElement output
756 expect(libraryElement, isNotNull); 791 expect(libraryElement, isNotNull);
757 expect(libraryElement.entryPoint, isNull); 792 expect(libraryElement.entryPoint, isNull);
758 expect(libraryElement.source, same(librarySource)); 793 expect(libraryElement.source, same(librarySource));
759 expect(libraryElement.definingCompilationUnit, libraryUnitElement); 794 expect(libraryElement.definingCompilationUnit, libraryUnitElement);
760 expect(libraryElement.parts, 795 expect(libraryElement.parts,
(...skipping 21 matching lines...) Expand all
782 expect( 817 expect(
783 (libraryUnit.directives[1] as PartDirective).element, same(firstPart)); 818 (libraryUnit.directives[1] as PartDirective).element, same(firstPart));
784 819
785 expect(secondPart.uri, 'part2.dart'); 820 expect(secondPart.uri, 'part2.dart');
786 expect(secondPart.uriOffset, 37); 821 expect(secondPart.uriOffset, 37);
787 expect(secondPart.uriEnd, 49); 822 expect(secondPart.uriEnd, 49);
788 expect( 823 expect(
789 (libraryUnit.directives[2] as PartDirective).element, same(secondPart)); 824 (libraryUnit.directives[2] as PartDirective).element, same(secondPart));
790 } 825 }
791 826
827 test_perform_classElements() {
828 _performBuildTask({
829 '/lib.dart': '''
830 library lib;
831 part 'part1.dart';
832 part 'part2.dart';
833 class A {}
834 ''',
835 '/part1.dart': '''
836 part of lib;
837 class B {}
838 ''',
839 '/part2.dart': '''
840 part of lib;
841 class C {}
842 '''
843 });
844 List<ClassElement> classElements = outputs[CLASS_ELEMENTS];
845 List<String> classNames = classElements.map((c) => c.displayName).toList();
846 expect(classNames, unorderedEquals(['A', 'B', 'C']));
847 }
848
792 test_perform_error_missingLibraryDirectiveWithPart_hasCommon() { 849 test_perform_error_missingLibraryDirectiveWithPart_hasCommon() {
793 _performBuildTask({ 850 _performBuildTask({
794 '/lib.dart': ''' 851 '/lib.dart': '''
795 part 'partA.dart'; 852 part 'partA.dart';
796 part 'partB.dart'; 853 part 'partB.dart';
797 ''', 854 ''',
798 '/partA.dart': ''' 855 '/partA.dart': '''
799 part of my_lib; 856 part of my_lib;
800 ''', 857 ''',
801 '/partB.dart': ''' 858 '/partB.dart': '''
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after
1262 context.sourceFactory = new SourceFactory(<UriResolver>[ 1319 context.sourceFactory = new SourceFactory(<UriResolver>[
1263 new DartUriResolver(sdk), 1320 new DartUriResolver(sdk),
1264 new ResourceUriResolver(resourceProvider) 1321 new ResourceUriResolver(resourceProvider)
1265 ]); 1322 ]);
1266 // prepare TaskManager 1323 // prepare TaskManager
1267 taskManager.addTaskDescriptor(GetContentTask.DESCRIPTOR); 1324 taskManager.addTaskDescriptor(GetContentTask.DESCRIPTOR);
1268 taskManager.addTaskDescriptor(ScanDartTask.DESCRIPTOR); 1325 taskManager.addTaskDescriptor(ScanDartTask.DESCRIPTOR);
1269 taskManager.addTaskDescriptor(ParseDartTask.DESCRIPTOR); 1326 taskManager.addTaskDescriptor(ParseDartTask.DESCRIPTOR);
1270 taskManager.addTaskDescriptor(BuildClassConstructorsTask.DESCRIPTOR); 1327 taskManager.addTaskDescriptor(BuildClassConstructorsTask.DESCRIPTOR);
1271 taskManager.addTaskDescriptor(BuildCompilationUnitElementTask.DESCRIPTOR); 1328 taskManager.addTaskDescriptor(BuildCompilationUnitElementTask.DESCRIPTOR);
1329 taskManager.addTaskDescriptor(BuildLibraryConstructorsTask.DESCRIPTOR);
1272 taskManager.addTaskDescriptor(BuildLibraryElementTask.DESCRIPTOR); 1330 taskManager.addTaskDescriptor(BuildLibraryElementTask.DESCRIPTOR);
1273 taskManager.addTaskDescriptor(BuildPublicNamespaceTask.DESCRIPTOR); 1331 taskManager.addTaskDescriptor(BuildPublicNamespaceTask.DESCRIPTOR);
1274 taskManager.addTaskDescriptor(BuildDirectiveElementsTask.DESCRIPTOR); 1332 taskManager.addTaskDescriptor(BuildDirectiveElementsTask.DESCRIPTOR);
1275 taskManager.addTaskDescriptor(BuildExportSourceClosureTask.DESCRIPTOR); 1333 taskManager.addTaskDescriptor(BuildExportSourceClosureTask.DESCRIPTOR);
1276 taskManager.addTaskDescriptor(BuildExportNamespaceTask.DESCRIPTOR); 1334 taskManager.addTaskDescriptor(BuildExportNamespaceTask.DESCRIPTOR);
1277 taskManager.addTaskDescriptor(BuildTypeProviderTask.DESCRIPTOR); 1335 taskManager.addTaskDescriptor(BuildTypeProviderTask.DESCRIPTOR);
1278 taskManager.addTaskDescriptor(BuildEnumMemberElementsTask.DESCRIPTOR); 1336 taskManager.addTaskDescriptor(BuildEnumMemberElementsTask.DESCRIPTOR);
1279 taskManager.addTaskDescriptor(BuildFunctionTypeAliasesTask.DESCRIPTOR); 1337 taskManager.addTaskDescriptor(BuildFunctionTypeAliasesTask.DESCRIPTOR);
1280 taskManager.addTaskDescriptor(ResolveUnitTypeNamesTask.DESCRIPTOR); 1338 taskManager.addTaskDescriptor(ResolveUnitTypeNamesTask.DESCRIPTOR);
1281 taskManager.addTaskDescriptor(ResolveLibraryTypeNamesTask.DESCRIPTOR); 1339 taskManager.addTaskDescriptor(ResolveLibraryTypeNamesTask.DESCRIPTOR);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1331 return entryMap.putIfAbsent(target, () => new CacheEntry()); 1389 return entryMap.putIfAbsent(target, () => new CacheEntry());
1332 } 1390 }
1333 1391
1334 TimestampedData<String> getContents(Source source) => source.contents; 1392 TimestampedData<String> getContents(Source source) => source.contents;
1335 1393
1336 noSuchMethod(Invocation invocation) { 1394 noSuchMethod(Invocation invocation) {
1337 print('noSuchMethod: ${invocation.memberName}'); 1395 print('noSuchMethod: ${invocation.memberName}');
1338 return super.noSuchMethod(invocation); 1396 return super.noSuchMethod(invocation);
1339 } 1397 }
1340 } 1398 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/task/dart.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698