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

Side by Side Diff: pkg/analyzer/lib/src/task/dart.dart

Issue 1193143002: Next steps toward HTML support (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Address comments Created 5 years, 6 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
« no previous file with comments | « pkg/analyzer/lib/src/plugin/engine_plugin.dart ('k') | pkg/analyzer/lib/src/task/driver.dart » ('j') | 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 analyzer.src.task.dart; 5 library analyzer.src.task.dart;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 import 'dart:math' as math; 8 import 'dart:math' as math;
9 9
10 import 'package:analyzer/src/context/cache.dart'; 10 import 'package:analyzer/src/context/cache.dart';
11 import 'package:analyzer/src/generated/ast.dart'; 11 import 'package:analyzer/src/generated/ast.dart';
12 import 'package:analyzer/src/generated/constant.dart'; 12 import 'package:analyzer/src/generated/constant.dart';
13 import 'package:analyzer/src/generated/element.dart'; 13 import 'package:analyzer/src/generated/element.dart';
14 import 'package:analyzer/src/generated/engine.dart' 14 import 'package:analyzer/src/generated/engine.dart'
15 hide AnalysisCache, AnalysisTask; 15 hide AnalysisCache, AnalysisTask;
16 import 'package:analyzer/src/generated/error.dart'; 16 import 'package:analyzer/src/generated/error.dart';
17 import 'package:analyzer/src/generated/error_verifier.dart'; 17 import 'package:analyzer/src/generated/error_verifier.dart';
18 import 'package:analyzer/src/generated/java_engine.dart'; 18 import 'package:analyzer/src/generated/java_engine.dart';
19 import 'package:analyzer/src/generated/parser.dart'; 19 import 'package:analyzer/src/generated/parser.dart';
20 import 'package:analyzer/src/generated/resolver.dart'; 20 import 'package:analyzer/src/generated/resolver.dart';
21 import 'package:analyzer/src/generated/scanner.dart'; 21 import 'package:analyzer/src/generated/scanner.dart';
22 import 'package:analyzer/src/generated/sdk.dart'; 22 import 'package:analyzer/src/generated/sdk.dart';
23 import 'package:analyzer/src/generated/source.dart'; 23 import 'package:analyzer/src/generated/source.dart';
24 import 'package:analyzer/src/task/driver.dart'; 24 import 'package:analyzer/src/task/driver.dart';
25 import 'package:analyzer/src/task/general.dart'; 25 import 'package:analyzer/src/task/general.dart';
26 import 'package:analyzer/src/task/html.dart';
26 import 'package:analyzer/src/task/inputs.dart'; 27 import 'package:analyzer/src/task/inputs.dart';
27 import 'package:analyzer/src/task/model.dart'; 28 import 'package:analyzer/src/task/model.dart';
28 import 'package:analyzer/task/dart.dart'; 29 import 'package:analyzer/task/dart.dart';
29 import 'package:analyzer/task/general.dart'; 30 import 'package:analyzer/task/general.dart';
30 import 'package:analyzer/task/model.dart'; 31 import 'package:analyzer/task/model.dart';
31 32
32 /** 33 /**
33 * The [ResultCachingPolicy] for ASTs. 34 * The [ResultCachingPolicy] for ASTs.
34 */ 35 */
35 const ResultCachingPolicy AST_CACHING_POLICY = 36 const ResultCachingPolicy AST_CACHING_POLICY =
(...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 outputs[CONSTRUCTORS] = classElement.constructors; 537 outputs[CONSTRUCTORS] = classElement.constructors;
537 outputs[CONSTRUCTORS_ERRORS] = errors; 538 outputs[CONSTRUCTORS_ERRORS] = errors;
538 } 539 }
539 } 540 }
540 541
541 /** 542 /**
542 * Return a map from the names of the inputs of this kind of task to the task 543 * Return a map from the names of the inputs of this kind of task to the task
543 * input descriptors describing those inputs for a task with the 544 * input descriptors describing those inputs for a task with the
544 * given [classElement]. 545 * given [classElement].
545 */ 546 */
546 static Map<String, TaskInput> buildInputs(ClassElement classElement) { 547 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
547 Source librarySource = classElement.library.source; 548 ClassElement element = target;
548 DartType superType = classElement.supertype; 549 Source librarySource = element.library.source;
550 DartType superType = element.supertype;
549 if (superType is InterfaceType) { 551 if (superType is InterfaceType) {
550 if (classElement.isMixinApplication || classElement.mixins.isNotEmpty) { 552 if (element.isMixinApplication || element.mixins.isNotEmpty) {
551 ClassElement superElement = superType.element; 553 ClassElement superElement = superType.element;
552 return <String, TaskInput>{ 554 return <String, TaskInput>{
553 'libraryDep': LIBRARY_ELEMENT5.of(librarySource), 555 'libraryDep': LIBRARY_ELEMENT5.of(librarySource),
554 SUPER_CONSTRUCTORS: CONSTRUCTORS.of(superElement) 556 SUPER_CONSTRUCTORS: CONSTRUCTORS.of(superElement)
555 }; 557 };
556 } 558 }
557 } 559 }
558 // No implicit constructors. 560 // No implicit constructors.
559 // Depend on LIBRARY_ELEMENT5 for invalidation. 561 // Depend on LIBRARY_ELEMENT5 for invalidation.
560 return <String, TaskInput>{ 562 return <String, TaskInput>{
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 outputs[COMPILATION_UNIT_ELEMENT] = element; 746 outputs[COMPILATION_UNIT_ELEMENT] = element;
745 outputs[RESOLVED_UNIT1] = unit; 747 outputs[RESOLVED_UNIT1] = unit;
746 outputs[COMPILATION_UNIT_CONSTANTS] = constants; 748 outputs[COMPILATION_UNIT_CONSTANTS] = constants;
747 } 749 }
748 750
749 /** 751 /**
750 * Return a map from the names of the inputs of this kind of task to the task 752 * Return a map from the names of the inputs of this kind of task to the task
751 * input descriptors describing those inputs for a task with the given 753 * input descriptors describing those inputs for a task with the given
752 * [target]. 754 * [target].
753 */ 755 */
754 static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { 756 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
757 LibrarySpecificUnit unit = target;
755 return <String, TaskInput>{ 758 return <String, TaskInput>{
756 PARSED_UNIT_INPUT_NAME: PARSED_UNIT.of(target.unit) 759 PARSED_UNIT_INPUT_NAME: PARSED_UNIT.of(unit.unit)
757 }; 760 };
758 } 761 }
759 762
760 /** 763 /**
761 * Create a [BuildCompilationUnitElementTask] based on the given [target] in 764 * Create a [BuildCompilationUnitElementTask] based on the given [target] in
762 * the given [context]. 765 * the given [context].
763 */ 766 */
764 static BuildCompilationUnitElementTask createTask( 767 static BuildCompilationUnitElementTask createTask(
765 AnalysisContext context, AnalysisTarget target) { 768 AnalysisContext context, AnalysisTarget target) {
766 return new BuildCompilationUnitElementTask(context, target); 769 return new BuildCompilationUnitElementTask(context, target);
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
945 // 948 //
946 outputs[LIBRARY_ELEMENT2] = libraryElement; 949 outputs[LIBRARY_ELEMENT2] = libraryElement;
947 outputs[BUILD_DIRECTIVES_ERRORS] = errors; 950 outputs[BUILD_DIRECTIVES_ERRORS] = errors;
948 } 951 }
949 952
950 /** 953 /**
951 * Return a map from the names of the inputs of this kind of task to the task 954 * Return a map from the names of the inputs of this kind of task to the task
952 * input descriptors describing those inputs for a task with the 955 * input descriptors describing those inputs for a task with the
953 * given library [libSource]. 956 * given library [libSource].
954 */ 957 */
955 static Map<String, TaskInput> buildInputs(Source libSource) { 958 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
959 Source source = target;
956 return <String, TaskInput>{ 960 return <String, TaskInput>{
957 LIBRARY_INPUT: LIBRARY_ELEMENT1.of(libSource), 961 LIBRARY_INPUT: LIBRARY_ELEMENT1.of(source),
958 UNIT_INPUT_NAME: 962 UNIT_INPUT_NAME:
959 RESOLVED_UNIT1.of(new LibrarySpecificUnit(libSource, libSource)), 963 RESOLVED_UNIT1.of(new LibrarySpecificUnit(source, source)),
960 IMPORTS_LIBRARY_ELEMENT_INPUT_NAME: 964 IMPORTS_LIBRARY_ELEMENT_INPUT_NAME:
961 IMPORTED_LIBRARIES.of(libSource).toMapOf(LIBRARY_ELEMENT1), 965 IMPORTED_LIBRARIES.of(source).toMapOf(LIBRARY_ELEMENT1),
962 EXPORTS_LIBRARY_ELEMENT_INPUT_NAME: 966 EXPORTS_LIBRARY_ELEMENT_INPUT_NAME:
963 EXPORTED_LIBRARIES.of(libSource).toMapOf(LIBRARY_ELEMENT1), 967 EXPORTED_LIBRARIES.of(source).toMapOf(LIBRARY_ELEMENT1),
964 IMPORTS_SOURCE_KIND_INPUT_NAME: 968 IMPORTS_SOURCE_KIND_INPUT_NAME:
965 IMPORTED_LIBRARIES.of(libSource).toMapOf(SOURCE_KIND), 969 IMPORTED_LIBRARIES.of(source).toMapOf(SOURCE_KIND),
966 EXPORTS_SOURCE_KIND_INPUT_NAME: 970 EXPORTS_SOURCE_KIND_INPUT_NAME:
967 EXPORTED_LIBRARIES.of(libSource).toMapOf(SOURCE_KIND) 971 EXPORTED_LIBRARIES.of(source).toMapOf(SOURCE_KIND)
968 }; 972 };
969 } 973 }
970 974
971 /** 975 /**
972 * Create a [BuildDirectiveElementsTask] based on the given [target] in 976 * Create a [BuildDirectiveElementsTask] based on the given [target] in
973 * the given [context]. 977 * the given [context].
974 */ 978 */
975 static BuildDirectiveElementsTask createTask( 979 static BuildDirectiveElementsTask createTask(
976 AnalysisContext context, AnalysisTarget target) { 980 AnalysisContext context, AnalysisTarget target) {
977 return new BuildDirectiveElementsTask(context, target); 981 return new BuildDirectiveElementsTask(context, target);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1050 EnumMemberBuilder builder = new EnumMemberBuilder(typeProvider); 1054 EnumMemberBuilder builder = new EnumMemberBuilder(typeProvider);
1051 unit.accept(builder); 1055 unit.accept(builder);
1052 outputs[RESOLVED_UNIT2] = unit; 1056 outputs[RESOLVED_UNIT2] = unit;
1053 } 1057 }
1054 1058
1055 /** 1059 /**
1056 * Return a map from the names of the inputs of this kind of task to the task 1060 * Return a map from the names of the inputs of this kind of task to the task
1057 * input descriptors describing those inputs for a task with the 1061 * input descriptors describing those inputs for a task with the
1058 * given [target]. 1062 * given [target].
1059 */ 1063 */
1060 static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { 1064 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
1065 LibrarySpecificUnit unit = target;
1061 return <String, TaskInput>{ 1066 return <String, TaskInput>{
1062 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request), 1067 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request),
1063 UNIT_INPUT: RESOLVED_UNIT1.of(target) 1068 UNIT_INPUT: RESOLVED_UNIT1.of(unit)
1064 }; 1069 };
1065 } 1070 }
1066 1071
1067 /** 1072 /**
1068 * Create a [BuildEnumMemberElementsTask] based on the given [target] in 1073 * Create a [BuildEnumMemberElementsTask] based on the given [target] in
1069 * the given [context]. 1074 * the given [context].
1070 */ 1075 */
1071 static BuildEnumMemberElementsTask createTask( 1076 static BuildEnumMemberElementsTask createTask(
1072 AnalysisContext context, AnalysisTarget target) { 1077 AnalysisContext context, AnalysisTarget target) {
1073 return new BuildEnumMemberElementsTask(context, target); 1078 return new BuildEnumMemberElementsTask(context, target);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1119 // Record outputs. 1124 // Record outputs.
1120 // 1125 //
1121 outputs[LIBRARY_ELEMENT4] = library; 1126 outputs[LIBRARY_ELEMENT4] = library;
1122 } 1127 }
1123 1128
1124 /** 1129 /**
1125 * Return a map from the names of the inputs of this kind of task to the task 1130 * Return a map from the names of the inputs of this kind of task to the task
1126 * input descriptors describing those inputs for a task with the 1131 * input descriptors describing those inputs for a task with the
1127 * given library [libSource]. 1132 * given library [libSource].
1128 */ 1133 */
1129 static Map<String, TaskInput> buildInputs(Source libSource) { 1134 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
1135 Source source = target;
1130 return <String, TaskInput>{ 1136 return <String, TaskInput>{
1131 LIBRARY_INPUT: LIBRARY_ELEMENT3.of(libSource), 1137 LIBRARY_INPUT: LIBRARY_ELEMENT3.of(source),
1132 'exportsLibraryPublicNamespace': 1138 'exportsLibraryPublicNamespace':
1133 EXPORT_SOURCE_CLOSURE.of(libSource).toMapOf(LIBRARY_ELEMENT3) 1139 EXPORT_SOURCE_CLOSURE.of(source).toMapOf(LIBRARY_ELEMENT3)
1134 }; 1140 };
1135 } 1141 }
1136 1142
1137 /** 1143 /**
1138 * Create a [BuildExportNamespaceTask] based on the given [target] in 1144 * Create a [BuildExportNamespaceTask] based on the given [target] in
1139 * the given [context]. 1145 * the given [context].
1140 */ 1146 */
1141 static BuildExportNamespaceTask createTask( 1147 static BuildExportNamespaceTask createTask(
1142 AnalysisContext context, AnalysisTarget target) { 1148 AnalysisContext context, AnalysisTarget target) {
1143 return new BuildExportNamespaceTask(context, target); 1149 return new BuildExportNamespaceTask(context, target);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1204 removeDuplicateErrors(errorListener.errors); 1210 removeDuplicateErrors(errorListener.errors);
1205 outputs[RESOLVED_UNIT3] = unit; 1211 outputs[RESOLVED_UNIT3] = unit;
1206 } 1212 }
1207 1213
1208 /** 1214 /**
1209 * Return a map from the names of the inputs of this kind of task to the task 1215 * Return a map from the names of the inputs of this kind of task to the task
1210 * input descriptors describing those inputs for a task with the 1216 * input descriptors describing those inputs for a task with the
1211 * given [target]. 1217 * given [target].
1212 */ 1218 */
1213 static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { 1219 static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) {
1220 LibrarySpecificUnit unit = target;
1214 return <String, TaskInput>{ 1221 return <String, TaskInput>{
1215 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request), 1222 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request),
1216 'importsExportNamespace': 1223 'importsExportNamespace':
1217 IMPORTED_LIBRARIES.of(target.library).toMapOf(LIBRARY_ELEMENT4), 1224 IMPORTED_LIBRARIES.of(unit.library).toMapOf(LIBRARY_ELEMENT4),
1218 LIBRARY_INPUT: LIBRARY_ELEMENT4.of(target.library), 1225 LIBRARY_INPUT: LIBRARY_ELEMENT4.of(unit.library),
1219 UNIT_INPUT: RESOLVED_UNIT2.of(target) 1226 UNIT_INPUT: RESOLVED_UNIT2.of(unit)
1220 }; 1227 };
1221 } 1228 }
1222 1229
1223 /** 1230 /**
1224 * Create a [BuildFunctionTypeAliasesTask] based on the given [target] in 1231 * Create a [BuildFunctionTypeAliasesTask] based on the given [target] in
1225 * the given [context]. 1232 * the given [context].
1226 */ 1233 */
1227 static BuildFunctionTypeAliasesTask createTask( 1234 static BuildFunctionTypeAliasesTask createTask(
1228 AnalysisContext context, AnalysisTarget target) { 1235 AnalysisContext context, AnalysisTarget target) {
1229 return new BuildFunctionTypeAliasesTask(context, target); 1236 return new BuildFunctionTypeAliasesTask(context, target);
(...skipping 28 matching lines...) Expand all
1258 void internalPerform() { 1265 void internalPerform() {
1259 LibraryElement library = getRequiredInput(LIBRARY_INPUT); 1266 LibraryElement library = getRequiredInput(LIBRARY_INPUT);
1260 outputs[LIBRARY_ELEMENT6] = library; 1267 outputs[LIBRARY_ELEMENT6] = library;
1261 } 1268 }
1262 1269
1263 /** 1270 /**
1264 * Return a map from the names of the inputs of this kind of task to the task 1271 * Return a map from the names of the inputs of this kind of task to the task
1265 * input descriptors describing those inputs for a task with the 1272 * input descriptors describing those inputs for a task with the
1266 * given [target]. 1273 * given [target].
1267 */ 1274 */
1268 static Map<String, TaskInput> buildInputs(Source libSource) { 1275 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
1276 Source source = target;
1269 return <String, TaskInput>{ 1277 return <String, TaskInput>{
1270 LIBRARY_INPUT: LIBRARY_ELEMENT5.of(libSource), 1278 LIBRARY_INPUT: LIBRARY_ELEMENT5.of(source),
1271 'resolvedConstructors': 1279 'resolvedConstructors': CLASS_ELEMENTS.of(source).toListOf(CONSTRUCTORS),
1272 CLASS_ELEMENTS.of(libSource).toListOf(CONSTRUCTORS),
1273 }; 1280 };
1274 } 1281 }
1275 1282
1276 /** 1283 /**
1277 * Create a [BuildLibraryConstructorsTask] based on the given [target] in 1284 * Create a [BuildLibraryConstructorsTask] based on the given [target] in
1278 * the given [context]. 1285 * the given [context].
1279 */ 1286 */
1280 static BuildLibraryConstructorsTask createTask( 1287 static BuildLibraryConstructorsTask createTask(
1281 AnalysisContext context, AnalysisTarget target) { 1288 AnalysisContext context, AnalysisTarget target) {
1282 return new BuildLibraryConstructorsTask(context, target); 1289 return new BuildLibraryConstructorsTask(context, target);
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
1530 (setter as PropertyAccessorElementImpl).variable = variable; 1537 (setter as PropertyAccessorElementImpl).variable = variable;
1531 } 1538 }
1532 } 1539 }
1533 } 1540 }
1534 1541
1535 /** 1542 /**
1536 * Return a map from the names of the inputs of this kind of task to the task 1543 * Return a map from the names of the inputs of this kind of task to the task
1537 * input descriptors describing those inputs for a task with the given 1544 * input descriptors describing those inputs for a task with the given
1538 * [libSource]. 1545 * [libSource].
1539 */ 1546 */
1540 static Map<String, TaskInput> buildInputs(Source libSource) { 1547 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
1548 Source source = target;
1541 return <String, TaskInput>{ 1549 return <String, TaskInput>{
1542 DEFINING_UNIT_INPUT: 1550 DEFINING_UNIT_INPUT:
1543 RESOLVED_UNIT1.of(new LibrarySpecificUnit(libSource, libSource)), 1551 RESOLVED_UNIT1.of(new LibrarySpecificUnit(source, source)),
1544 PARTS_UNIT_INPUT: INCLUDED_PARTS.of(libSource).toList((Source unit) { 1552 PARTS_UNIT_INPUT: INCLUDED_PARTS.of(source).toList((Source unit) {
1545 return RESOLVED_UNIT1.of(new LibrarySpecificUnit(libSource, unit)); 1553 return RESOLVED_UNIT1.of(new LibrarySpecificUnit(source, unit));
1546 }) 1554 })
1547 }; 1555 };
1548 } 1556 }
1549 1557
1550 /** 1558 /**
1551 * Create a [BuildLibraryElementTask] based on the given [target] in the 1559 * Create a [BuildLibraryElementTask] based on the given [target] in the
1552 * given [context]. 1560 * given [context].
1553 */ 1561 */
1554 static BuildLibraryElementTask createTask( 1562 static BuildLibraryElementTask createTask(
1555 AnalysisContext context, AnalysisTarget target) { 1563 AnalysisContext context, AnalysisTarget target) {
(...skipping 29 matching lines...) Expand all
1585 LibraryElementImpl library = getRequiredInput(LIBRARY_INPUT); 1593 LibraryElementImpl library = getRequiredInput(LIBRARY_INPUT);
1586 library.publicNamespace = new PublicNamespaceBuilder().build(library); 1594 library.publicNamespace = new PublicNamespaceBuilder().build(library);
1587 outputs[LIBRARY_ELEMENT3] = library; 1595 outputs[LIBRARY_ELEMENT3] = library;
1588 } 1596 }
1589 1597
1590 /** 1598 /**
1591 * Return a map from the names of the inputs of this kind of task to the task 1599 * Return a map from the names of the inputs of this kind of task to the task
1592 * input descriptors describing those inputs for a task with the 1600 * input descriptors describing those inputs for a task with the
1593 * given library [libSource]. 1601 * given library [libSource].
1594 */ 1602 */
1595 static Map<String, TaskInput> buildInputs(Source libSource) { 1603 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
1596 return <String, TaskInput>{LIBRARY_INPUT: LIBRARY_ELEMENT2.of(libSource)}; 1604 Source source = target;
1605 return <String, TaskInput>{LIBRARY_INPUT: LIBRARY_ELEMENT2.of(source)};
1597 } 1606 }
1598 1607
1599 /** 1608 /**
1600 * Create a [BuildPublicNamespaceTask] based on the given [target] in 1609 * Create a [BuildPublicNamespaceTask] based on the given [target] in
1601 * the given [context]. 1610 * the given [context].
1602 */ 1611 */
1603 static BuildPublicNamespaceTask createTask( 1612 static BuildPublicNamespaceTask createTask(
1604 AnalysisContext context, AnalysisTarget target) { 1613 AnalysisContext context, AnalysisTarget target) {
1605 return new BuildPublicNamespaceTask(context, target); 1614 return new BuildPublicNamespaceTask(context, target);
1606 } 1615 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1657 outputs[EXPORT_SOURCE_CLOSURE] = exportClosure; 1666 outputs[EXPORT_SOURCE_CLOSURE] = exportClosure;
1658 outputs[IMPORT_EXPORT_SOURCE_CLOSURE] = importExportClosure; 1667 outputs[IMPORT_EXPORT_SOURCE_CLOSURE] = importExportClosure;
1659 outputs[IS_CLIENT] = importExportClosure.contains(htmlSource); 1668 outputs[IS_CLIENT] = importExportClosure.contains(htmlSource);
1660 } 1669 }
1661 1670
1662 /** 1671 /**
1663 * Return a map from the names of the inputs of this kind of task to the task 1672 * Return a map from the names of the inputs of this kind of task to the task
1664 * input descriptors describing those inputs for a task with the 1673 * input descriptors describing those inputs for a task with the
1665 * given library [libSource]. 1674 * given library [libSource].
1666 */ 1675 */
1667 static Map<String, TaskInput> buildInputs(Source libSource) { 1676 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
1677 Source source = target;
1668 return <String, TaskInput>{ 1678 return <String, TaskInput>{
1669 IMPORT_INPUT: new _ImportSourceClosureTaskInput(libSource), 1679 IMPORT_INPUT: new _ImportSourceClosureTaskInput(source),
1670 EXPORT_INPUT: new _ExportSourceClosureTaskInput(libSource), 1680 EXPORT_INPUT: new _ExportSourceClosureTaskInput(source),
1671 IMPORT_EXPORT_INPUT: new _ImportExportSourceClosureTaskInput(libSource) 1681 IMPORT_EXPORT_INPUT: new _ImportExportSourceClosureTaskInput(source)
1672 }; 1682 };
1673 } 1683 }
1674 1684
1675 /** 1685 /**
1676 * Create a [BuildSourceClosuresTask] based on the given [target] in 1686 * Create a [BuildSourceClosuresTask] based on the given [target] in
1677 * the given [context]. 1687 * the given [context].
1678 */ 1688 */
1679 static BuildSourceClosuresTask createTask( 1689 static BuildSourceClosuresTask createTask(
1680 AnalysisContext context, AnalysisTarget target) { 1690 AnalysisContext context, AnalysisTarget target) {
1681 return new BuildSourceClosuresTask(context, target); 1691 return new BuildSourceClosuresTask(context, target);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1718 Namespace asyncNamespace = asyncLibrary.publicNamespace; 1728 Namespace asyncNamespace = asyncLibrary.publicNamespace;
1719 // 1729 //
1720 // Record outputs. 1730 // Record outputs.
1721 // 1731 //
1722 TypeProvider typeProvider = 1732 TypeProvider typeProvider =
1723 new TypeProviderImpl.forNamespaces(coreNamespace, asyncNamespace); 1733 new TypeProviderImpl.forNamespaces(coreNamespace, asyncNamespace);
1724 (context as InternalAnalysisContext).typeProvider = typeProvider; 1734 (context as InternalAnalysisContext).typeProvider = typeProvider;
1725 outputs[TYPE_PROVIDER] = typeProvider; 1735 outputs[TYPE_PROVIDER] = typeProvider;
1726 } 1736 }
1727 1737
1728 static Map<String, TaskInput> buildInputs(AnalysisContextTarget target) { 1738 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
1729 SourceFactory sourceFactory = target.context.sourceFactory; 1739 AnalysisContextTarget contextTarget = target;
1740 SourceFactory sourceFactory = contextTarget.context.sourceFactory;
1730 Source coreSource = sourceFactory.forUri(DartSdk.DART_CORE); 1741 Source coreSource = sourceFactory.forUri(DartSdk.DART_CORE);
1731 Source asyncSource = sourceFactory.forUri(DartSdk.DART_ASYNC); 1742 Source asyncSource = sourceFactory.forUri(DartSdk.DART_ASYNC);
1732 return <String, TaskInput>{ 1743 return <String, TaskInput>{
1733 CORE_INPUT: LIBRARY_ELEMENT3.of(coreSource), 1744 CORE_INPUT: LIBRARY_ELEMENT3.of(coreSource),
1734 ASYNC_INPUT: LIBRARY_ELEMENT3.of(asyncSource) 1745 ASYNC_INPUT: LIBRARY_ELEMENT3.of(asyncSource)
1735 }; 1746 };
1736 } 1747 }
1737 1748
1738 /** 1749 /**
1739 * Create a [BuildTypeProviderTask] based on the given [context]. 1750 * Create a [BuildTypeProviderTask] based on the given [context].
1740 */ 1751 */
1741 static BuildTypeProviderTask createTask( 1752 static BuildTypeProviderTask createTask(
1742 AnalysisContext context, AnalysisContextTarget target) { 1753 AnalysisContext context, AnalysisTarget target) {
1743 return new BuildTypeProviderTask(context, target); 1754 return new BuildTypeProviderTask(context, target);
1744 } 1755 }
1745 } 1756 }
1746 1757
1747 /** 1758 /**
1748 * A task that computes [CONSTANT_DEPENDENCIES] for a constant. 1759 * A task that computes [CONSTANT_DEPENDENCIES] for a constant.
1749 */ 1760 */
1750 class ComputeConstantDependenciesTask extends ConstantEvaluationAnalysisTask { 1761 class ComputeConstantDependenciesTask extends ConstantEvaluationAnalysisTask {
1751 /** 1762 /**
1752 * The name of the [RESOLVED_UNIT6] input. 1763 * The name of the [RESOLVED_UNIT6] input.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1791 // Record outputs. 1802 // Record outputs.
1792 // 1803 //
1793 outputs[CONSTANT_DEPENDENCIES] = dependencies; 1804 outputs[CONSTANT_DEPENDENCIES] = dependencies;
1794 } 1805 }
1795 1806
1796 /** 1807 /**
1797 * Return a map from the names of the inputs of this kind of task to the task 1808 * Return a map from the names of the inputs of this kind of task to the task
1798 * input descriptors describing those inputs for a task with the 1809 * input descriptors describing those inputs for a task with the
1799 * given [target]. 1810 * given [target].
1800 */ 1811 */
1801 static Map<String, TaskInput> buildInputs(ConstantEvaluationTarget target) { 1812 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
1802 if (target is Element) { 1813 if (target is Element) {
1803 CompilationUnitElementImpl unit = (target as Element) 1814 CompilationUnitElementImpl unit = target
1804 .getAncestor((Element element) => element is CompilationUnitElement); 1815 .getAncestor((Element element) => element is CompilationUnitElement);
1805 return <String, TaskInput>{ 1816 return <String, TaskInput>{
1806 UNIT_INPUT: RESOLVED_UNIT6 1817 UNIT_INPUT: RESOLVED_UNIT6
1807 .of(new LibrarySpecificUnit(unit.librarySource, target.source)), 1818 .of(new LibrarySpecificUnit(unit.librarySource, target.source)),
1808 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request) 1819 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request)
1809 }; 1820 };
1810 } else if (target is ConstantEvaluationTarget_Annotation) { 1821 } else if (target is ConstantEvaluationTarget_Annotation) {
1811 return <String, TaskInput>{ 1822 return <String, TaskInput>{
1812 UNIT_INPUT: RESOLVED_UNIT6 1823 UNIT_INPUT: RESOLVED_UNIT6
1813 .of(new LibrarySpecificUnit(target.librarySource, target.source)), 1824 .of(new LibrarySpecificUnit(target.librarySource, target.source)),
1814 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request) 1825 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request)
1815 }; 1826 };
1816 } else {
1817 // Should never happen.
1818 assert(false);
1819 return <String, TaskInput>{};
1820 } 1827 }
1828 throw new AnalysisException(
1829 'Cannot build inputs for a ${target.runtimeType}');
1821 } 1830 }
1822 1831
1823 /** 1832 /**
1824 * Create a [ResolveUnitReferencesTask] based on the given [target] in 1833 * Create a [ResolveUnitReferencesTask] based on the given [target] in
1825 * the given [context]. 1834 * the given [context].
1826 */ 1835 */
1827 static ComputeConstantDependenciesTask createTask( 1836 static ComputeConstantDependenciesTask createTask(
1828 AnalysisContext context, AnalysisTarget target) { 1837 AnalysisContext context, AnalysisTarget target) {
1829 return new ComputeConstantDependenciesTask(context, target); 1838 return new ComputeConstantDependenciesTask(context, target);
1830 } 1839 }
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1894 // Record outputs. 1903 // Record outputs.
1895 // 1904 //
1896 outputs[CONSTANT_VALUE] = constant; 1905 outputs[CONSTANT_VALUE] = constant;
1897 } 1906 }
1898 1907
1899 /** 1908 /**
1900 * Return a map from the names of the inputs of this kind of task to the task 1909 * Return a map from the names of the inputs of this kind of task to the task
1901 * input descriptors describing those inputs for a task with the given 1910 * input descriptors describing those inputs for a task with the given
1902 * [target]. 1911 * [target].
1903 */ 1912 */
1904 static Map<String, TaskInput> buildInputs(ConstantEvaluationTarget target) { 1913 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
1914 ConstantEvaluationTarget evaluationTarget = target;
1905 return <String, TaskInput>{ 1915 return <String, TaskInput>{
1906 DEPENDENCIES_INPUT: 1916 DEPENDENCIES_INPUT:
1907 CONSTANT_DEPENDENCIES.of(target).toListOf(CONSTANT_VALUE), 1917 CONSTANT_DEPENDENCIES.of(evaluationTarget).toListOf(CONSTANT_VALUE),
1908 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request) 1918 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request)
1909 }; 1919 };
1910 } 1920 }
1911 1921
1912 /** 1922 /**
1913 * Create a [ComputeConstantValueTask] based on the given [target] in the 1923 * Create a [ComputeConstantValueTask] based on the given [target] in the
1914 * given [context]. 1924 * given [context].
1915 */ 1925 */
1916 static ComputeConstantValueTask createTask( 1926 static ComputeConstantValueTask createTask(
1917 AnalysisContext context, AnalysisTarget target) { 1927 AnalysisContext context, AnalysisTarget target) {
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1977 // cache appropriately. 1987 // cache appropriately.
1978 Source source = getRequiredSource(); 1988 Source source = getRequiredSource();
1979 outputs[CONTAINING_LIBRARIES] = context.getLibrariesContaining(source); 1989 outputs[CONTAINING_LIBRARIES] = context.getLibrariesContaining(source);
1980 } 1990 }
1981 1991
1982 /** 1992 /**
1983 * Return a map from the names of the inputs of this kind of task to the task 1993 * Return a map from the names of the inputs of this kind of task to the task
1984 * input descriptors describing those inputs for a task with the 1994 * input descriptors describing those inputs for a task with the
1985 * given [target]. 1995 * given [target].
1986 */ 1996 */
1987 static Map<String, TaskInput> buildInputs(Source target) { 1997 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
1988 return <String, TaskInput>{}; 1998 return <String, TaskInput>{};
1989 } 1999 }
1990 2000
1991 /** 2001 /**
1992 * Create a [ContainingLibrariesTask] based on the given [target] in the given 2002 * Create a [ContainingLibrariesTask] based on the given [target] in the given
1993 * [context]. 2003 * [context].
1994 */ 2004 */
1995 static ContainingLibrariesTask createTask( 2005 static ContainingLibrariesTask createTask(
1996 AnalysisContext context, AnalysisTarget target) { 2006 AnalysisContext context, AnalysisTarget target) {
1997 return new ContainingLibrariesTask(context, target); 2007 return new ContainingLibrariesTask(context, target);
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
2059 // Record outputs. 2069 // Record outputs.
2060 // 2070 //
2061 outputs[DART_ERRORS] = AnalysisError.mergeLists(errorLists); 2071 outputs[DART_ERRORS] = AnalysisError.mergeLists(errorLists);
2062 } 2072 }
2063 2073
2064 /** 2074 /**
2065 * Return a map from the names of the inputs of this kind of task to the task 2075 * Return a map from the names of the inputs of this kind of task to the task
2066 * input descriptors describing those inputs for a task with the 2076 * input descriptors describing those inputs for a task with the
2067 * given [target]. 2077 * given [target].
2068 */ 2078 */
2069 static Map<String, TaskInput> buildInputs(Source target) { 2079 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
2080 Source source = target;
2070 return <String, TaskInput>{ 2081 return <String, TaskInput>{
2071 BUILD_DIRECTIVES_ERRORS_INPUT: BUILD_DIRECTIVES_ERRORS.of(target), 2082 BUILD_DIRECTIVES_ERRORS_INPUT: BUILD_DIRECTIVES_ERRORS.of(source),
2072 BUILD_LIBRARY_ERRORS_INPUT: BUILD_LIBRARY_ERRORS.of(target), 2083 BUILD_LIBRARY_ERRORS_INPUT: BUILD_LIBRARY_ERRORS.of(source),
2073 PARSE_ERRORS_INPUT: PARSE_ERRORS.of(target), 2084 PARSE_ERRORS_INPUT: PARSE_ERRORS.of(source),
2074 SCAN_ERRORS_INPUT: SCAN_ERRORS.of(target), 2085 SCAN_ERRORS_INPUT: SCAN_ERRORS.of(source),
2075 LIBRARY_UNIT_ERRORS_INPUT: CONTAINING_LIBRARIES 2086 LIBRARY_UNIT_ERRORS_INPUT: CONTAINING_LIBRARIES
2076 .of(target) 2087 .of(source)
2077 .toMap((Source library) { 2088 .toMap((Source library) {
2078 LibrarySpecificUnit unit = new LibrarySpecificUnit(library, target); 2089 LibrarySpecificUnit unit = new LibrarySpecificUnit(library, source);
2079 return LIBRARY_UNIT_ERRORS.of(unit); 2090 return LIBRARY_UNIT_ERRORS.of(unit);
2080 }) 2091 })
2081 }; 2092 };
2082 } 2093 }
2083 2094
2084 /** 2095 /**
2085 * Create a [DartErrorsTask] based on the given [target] in the given 2096 * Create a [DartErrorsTask] based on the given [target] in the given
2086 * [context]. 2097 * [context].
2087 */ 2098 */
2088 static DartErrorsTask createTask( 2099 static DartErrorsTask createTask(
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2124 // all constants are evaluated before this method is called. 2135 // all constants are evaluated before this method is called.
2125 CompilationUnit unit = getRequiredInput(UNIT_INPUT); 2136 CompilationUnit unit = getRequiredInput(UNIT_INPUT);
2126 outputs[RESOLVED_UNIT] = unit; 2137 outputs[RESOLVED_UNIT] = unit;
2127 } 2138 }
2128 2139
2129 /** 2140 /**
2130 * Return a map from the names of the inputs of this kind of task to the task 2141 * Return a map from the names of the inputs of this kind of task to the task
2131 * input descriptors describing those inputs for a task with the 2142 * input descriptors describing those inputs for a task with the
2132 * given [target]. 2143 * given [target].
2133 */ 2144 */
2134 static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { 2145 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
2146 LibrarySpecificUnit unit = target;
2135 return <String, TaskInput>{ 2147 return <String, TaskInput>{
2136 'libraryElement': LIBRARY_ELEMENT.of(target.library), 2148 'libraryElement': LIBRARY_ELEMENT.of(unit.library),
2137 UNIT_INPUT: RESOLVED_UNIT6.of(target), 2149 UNIT_INPUT: RESOLVED_UNIT6.of(unit),
2138 CONSTANT_VALUES: 2150 CONSTANT_VALUES:
2139 COMPILATION_UNIT_CONSTANTS.of(target).toListOf(CONSTANT_VALUE) 2151 COMPILATION_UNIT_CONSTANTS.of(unit).toListOf(CONSTANT_VALUE)
2140 }; 2152 };
2141 } 2153 }
2142 2154
2143 /** 2155 /**
2144 * Create an [EvaluateUnitConstantsTask] based on the given [target] in 2156 * Create an [EvaluateUnitConstantsTask] based on the given [target] in
2145 * the given [context]. 2157 * the given [context].
2146 */ 2158 */
2147 static EvaluateUnitConstantsTask createTask( 2159 static EvaluateUnitConstantsTask createTask(
2148 AnalysisContext context, LibrarySpecificUnit target) { 2160 AnalysisContext context, AnalysisTarget target) {
2149 return new EvaluateUnitConstantsTask(context, target); 2161 return new EvaluateUnitConstantsTask(context, target);
2150 } 2162 }
2151 } 2163 }
2152 2164
2153 /** 2165 /**
2154 * The helper for building the export [Namespace] of a [LibraryElement]. 2166 * The helper for building the export [Namespace] of a [LibraryElement].
2155 */ 2167 */
2156 class ExportNamespaceBuilder { 2168 class ExportNamespaceBuilder {
2157 /** 2169 /**
2158 * Build the export [Namespace] of the given [LibraryElement]. 2170 * Build the export [Namespace] of the given [LibraryElement].
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
2291 // Record outputs. 2303 // Record outputs.
2292 // 2304 //
2293 outputs[USED_IMPORTED_ELEMENTS] = visitor.usedElements; 2305 outputs[USED_IMPORTED_ELEMENTS] = visitor.usedElements;
2294 } 2306 }
2295 2307
2296 /** 2308 /**
2297 * Return a map from the names of the inputs of this kind of task to the task 2309 * Return a map from the names of the inputs of this kind of task to the task
2298 * input descriptors describing those inputs for a task with the 2310 * input descriptors describing those inputs for a task with the
2299 * given [target]. 2311 * given [target].
2300 */ 2312 */
2301 static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { 2313 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
2302 return <String, TaskInput>{UNIT_INPUT: RESOLVED_UNIT6.of(target)}; 2314 LibrarySpecificUnit unit = target;
2315 return <String, TaskInput>{UNIT_INPUT: RESOLVED_UNIT6.of(unit)};
2303 } 2316 }
2304 2317
2305 /** 2318 /**
2306 * Create a [GatherUsedImportedElementsTask] based on the given [target] in 2319 * Create a [GatherUsedImportedElementsTask] based on the given [target] in
2307 * the given [context]. 2320 * the given [context].
2308 */ 2321 */
2309 static GatherUsedImportedElementsTask createTask( 2322 static GatherUsedImportedElementsTask createTask(
2310 AnalysisContext context, LibrarySpecificUnit target) { 2323 AnalysisContext context, AnalysisTarget target) {
2311 return new GatherUsedImportedElementsTask(context, target); 2324 return new GatherUsedImportedElementsTask(context, target);
2312 } 2325 }
2313 } 2326 }
2314 2327
2315 /** 2328 /**
2316 * A task that builds [USED_LOCAL_ELEMENTS] for a unit. 2329 * A task that builds [USED_LOCAL_ELEMENTS] for a unit.
2317 */ 2330 */
2318 class GatherUsedLocalElementsTask extends SourceBasedAnalysisTask { 2331 class GatherUsedLocalElementsTask extends SourceBasedAnalysisTask {
2319 /** 2332 /**
2320 * The name of the [RESOLVED_UNIT6] input. 2333 * The name of the [RESOLVED_UNIT6] input.
(...skipping 29 matching lines...) Expand all
2350 // Record outputs. 2363 // Record outputs.
2351 // 2364 //
2352 outputs[USED_LOCAL_ELEMENTS] = visitor.usedElements; 2365 outputs[USED_LOCAL_ELEMENTS] = visitor.usedElements;
2353 } 2366 }
2354 2367
2355 /** 2368 /**
2356 * Return a map from the names of the inputs of this kind of task to the task 2369 * Return a map from the names of the inputs of this kind of task to the task
2357 * input descriptors describing those inputs for a task with the 2370 * input descriptors describing those inputs for a task with the
2358 * given [target]. 2371 * given [target].
2359 */ 2372 */
2360 static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { 2373 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
2361 return <String, TaskInput>{UNIT_INPUT: RESOLVED_UNIT6.of(target)}; 2374 LibrarySpecificUnit unit = target;
2375 return <String, TaskInput>{UNIT_INPUT: RESOLVED_UNIT6.of(unit)};
2362 } 2376 }
2363 2377
2364 /** 2378 /**
2365 * Create a [GatherUsedLocalElementsTask] based on the given [target] in 2379 * Create a [GatherUsedLocalElementsTask] based on the given [target] in
2366 * the given [context]. 2380 * the given [context].
2367 */ 2381 */
2368 static GatherUsedLocalElementsTask createTask( 2382 static GatherUsedLocalElementsTask createTask(
2369 AnalysisContext context, LibrarySpecificUnit target) { 2383 AnalysisContext context, AnalysisTarget target) {
2370 return new GatherUsedLocalElementsTask(context, target); 2384 return new GatherUsedLocalElementsTask(context, target);
2371 } 2385 }
2372 } 2386 }
2373 2387
2374 /** 2388 /**
2375 * A task that generates [HINTS] for a unit. 2389 * A task that generates [HINTS] for a unit.
2376 */ 2390 */
2377 class GenerateHintsTask extends SourceBasedAnalysisTask { 2391 class GenerateHintsTask extends SourceBasedAnalysisTask {
2378 /** 2392 /**
2379 * The name of the [RESOLVED_UNIT6] input. 2393 * The name of the [RESOLVED_UNIT6] input.
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
2466 // Record outputs. 2480 // Record outputs.
2467 // 2481 //
2468 outputs[HINTS] = errorListener.errors; 2482 outputs[HINTS] = errorListener.errors;
2469 } 2483 }
2470 2484
2471 /** 2485 /**
2472 * Return a map from the names of the inputs of this kind of task to the task 2486 * Return a map from the names of the inputs of this kind of task to the task
2473 * input descriptors describing those inputs for a task with the 2487 * input descriptors describing those inputs for a task with the
2474 * given [target]. 2488 * given [target].
2475 */ 2489 */
2476 static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { 2490 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
2477 Source libSource = target.library; 2491 LibrarySpecificUnit unit = target;
2492 Source libSource = unit.library;
2478 return <String, TaskInput>{ 2493 return <String, TaskInput>{
2479 RESOLVED_UNIT_INPUT: RESOLVED_UNIT.of(target), 2494 RESOLVED_UNIT_INPUT: RESOLVED_UNIT.of(unit),
2480 USED_LOCAL_ELEMENTS_INPUT: UNITS.of(libSource).toList((unit) { 2495 USED_LOCAL_ELEMENTS_INPUT: UNITS.of(libSource).toList((unit) {
2481 LibrarySpecificUnit target = new LibrarySpecificUnit(libSource, unit); 2496 LibrarySpecificUnit target = new LibrarySpecificUnit(libSource, unit);
2482 return USED_LOCAL_ELEMENTS.of(target); 2497 return USED_LOCAL_ELEMENTS.of(target);
2483 }), 2498 }),
2484 USED_IMPORTED_ELEMENTS_INPUT: UNITS.of(libSource).toList((unit) { 2499 USED_IMPORTED_ELEMENTS_INPUT: UNITS.of(libSource).toList((unit) {
2485 LibrarySpecificUnit target = new LibrarySpecificUnit(libSource, unit); 2500 LibrarySpecificUnit target = new LibrarySpecificUnit(libSource, unit);
2486 return USED_IMPORTED_ELEMENTS.of(target); 2501 return USED_IMPORTED_ELEMENTS.of(target);
2487 }), 2502 }),
2488 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request) 2503 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request)
2489 }; 2504 };
(...skipping 30 matching lines...) Expand all
2520 @override 2535 @override
2521 void internalPerform() { 2536 void internalPerform() {
2522 outputs[LIBRARY_ERRORS_READY] = true; 2537 outputs[LIBRARY_ERRORS_READY] = true;
2523 } 2538 }
2524 2539
2525 /** 2540 /**
2526 * Return a map from the names of the inputs of this kind of task to the task 2541 * Return a map from the names of the inputs of this kind of task to the task
2527 * input descriptors describing those inputs for a task with the 2542 * input descriptors describing those inputs for a task with the
2528 * given [library]. 2543 * given [library].
2529 */ 2544 */
2530 static Map<String, TaskInput> buildInputs(Source library) { 2545 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
2546 Source source = target;
2531 return <String, TaskInput>{ 2547 return <String, TaskInput>{
2532 'allErrors': UNITS.of(library).toListOf(DART_ERRORS) 2548 'allErrors': UNITS.of(source).toListOf(DART_ERRORS)
2533 }; 2549 };
2534 } 2550 }
2535 2551
2536 /** 2552 /**
2537 * Create a [LibraryErrorsReadyTask] based on the given [target] in the given 2553 * Create a [LibraryErrorsReadyTask] based on the given [target] in the given
2538 * [context]. 2554 * [context].
2539 */ 2555 */
2540 static LibraryErrorsReadyTask createTask( 2556 static LibraryErrorsReadyTask createTask(
2541 AnalysisContext context, AnalysisTarget target) { 2557 AnalysisContext context, AnalysisTarget target) {
2542 return new LibraryErrorsReadyTask(context, target); 2558 return new LibraryErrorsReadyTask(context, target);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
2617 // Record outputs. 2633 // Record outputs.
2618 // 2634 //
2619 outputs[LIBRARY_UNIT_ERRORS] = AnalysisError.mergeLists(errorLists); 2635 outputs[LIBRARY_UNIT_ERRORS] = AnalysisError.mergeLists(errorLists);
2620 } 2636 }
2621 2637
2622 /** 2638 /**
2623 * Return a map from the names of the inputs of this kind of task to the task 2639 * Return a map from the names of the inputs of this kind of task to the task
2624 * input descriptors describing those inputs for a task with the 2640 * input descriptors describing those inputs for a task with the
2625 * given [unit]. 2641 * given [unit].
2626 */ 2642 */
2627 static Map<String, TaskInput> buildInputs(LibrarySpecificUnit unit) { 2643 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
2644 LibrarySpecificUnit unit = target;
2628 return <String, TaskInput>{ 2645 return <String, TaskInput>{
2629 BUILD_FUNCTION_TYPE_ALIASES_ERRORS_INPUT: 2646 BUILD_FUNCTION_TYPE_ALIASES_ERRORS_INPUT:
2630 BUILD_FUNCTION_TYPE_ALIASES_ERRORS.of(unit), 2647 BUILD_FUNCTION_TYPE_ALIASES_ERRORS.of(unit),
2631 CONSTRUCTORS_ERRORS_INPUT: COMPILATION_UNIT_ELEMENT 2648 CONSTRUCTORS_ERRORS_INPUT: COMPILATION_UNIT_ELEMENT
2632 .of(unit) 2649 .of(unit)
2633 .mappedToList((CompilationUnitElement element) => element.types) 2650 .mappedToList((CompilationUnitElement element) => element.types)
2634 .toListOf(CONSTRUCTORS_ERRORS), 2651 .toListOf(CONSTRUCTORS_ERRORS),
2635 HINTS_INPUT: HINTS.of(unit), 2652 HINTS_INPUT: HINTS.of(unit),
2636 RESOLVE_REFERENCES_ERRORS_INPUT: RESOLVE_REFERENCES_ERRORS.of(unit), 2653 RESOLVE_REFERENCES_ERRORS_INPUT: RESOLVE_REFERENCES_ERRORS.of(unit),
2637 RESOLVE_TYPE_NAMES_ERRORS_INPUT: RESOLVE_TYPE_NAMES_ERRORS.of(unit), 2654 RESOLVE_TYPE_NAMES_ERRORS_INPUT: RESOLVE_TYPE_NAMES_ERRORS.of(unit),
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
2693 ParseDartTask(InternalAnalysisContext context, AnalysisTarget target) 2710 ParseDartTask(InternalAnalysisContext context, AnalysisTarget target)
2694 : super(context, target); 2711 : super(context, target);
2695 2712
2696 @override 2713 @override
2697 TaskDescriptor get descriptor => DESCRIPTOR; 2714 TaskDescriptor get descriptor => DESCRIPTOR;
2698 2715
2699 @override 2716 @override
2700 void internalPerform() { 2717 void internalPerform() {
2701 Source source = getRequiredSource(); 2718 Source source = getRequiredSource();
2702 LineInfo lineInfo = getRequiredInput(LINE_INFO_INPUT_NAME); 2719 LineInfo lineInfo = getRequiredInput(LINE_INFO_INPUT_NAME);
2703 int modificationTime = getRequiredInput(MODIFICATION_TIME_INPUT_NAME);
2704 Token tokenStream = getRequiredInput(TOKEN_STREAM_INPUT_NAME); 2720 Token tokenStream = getRequiredInput(TOKEN_STREAM_INPUT_NAME);
2705 2721
2706 RecordingErrorListener errorListener = new RecordingErrorListener(); 2722 RecordingErrorListener errorListener = new RecordingErrorListener();
2707 Parser parser = new Parser(source, errorListener); 2723 Parser parser = new Parser(source, errorListener);
2708 AnalysisOptions options = context.analysisOptions; 2724 AnalysisOptions options = context.analysisOptions;
2709 parser.parseFunctionBodies = options.analyzeFunctionBodiesPredicate(source); 2725 parser.parseFunctionBodies = options.analyzeFunctionBodiesPredicate(source);
2710 CompilationUnit unit = parser.parseCompilationUnit(tokenStream); 2726 CompilationUnit unit = parser.parseCompilationUnit(tokenStream);
2711 unit.lineInfo = lineInfo; 2727 unit.lineInfo = lineInfo;
2712 2728
2713 bool hasNonPartOfDirective = false; 2729 bool hasNonPartOfDirective = false;
(...skipping 28 matching lines...) Expand all
2742 // Always include "dart:core" source. 2758 // Always include "dart:core" source.
2743 // 2759 //
2744 HashSet<Source> importedSourceSet = 2760 HashSet<Source> importedSourceSet =
2745 new HashSet.from(explicitlyImportedSourceSet); 2761 new HashSet.from(explicitlyImportedSourceSet);
2746 Source coreLibrarySource = context.sourceFactory.forUri(DartSdk.DART_CORE); 2762 Source coreLibrarySource = context.sourceFactory.forUri(DartSdk.DART_CORE);
2747 importedSourceSet.add(coreLibrarySource); 2763 importedSourceSet.add(coreLibrarySource);
2748 // 2764 //
2749 // Compute kind. 2765 // Compute kind.
2750 // 2766 //
2751 SourceKind sourceKind = SourceKind.LIBRARY; 2767 SourceKind sourceKind = SourceKind.LIBRARY;
2752 if (modificationTime == -1) { 2768 if (hasPartOfDirective && !hasNonPartOfDirective) {
2753 sourceKind = SourceKind.UNKNOWN;
2754 } else if (hasPartOfDirective && !hasNonPartOfDirective) {
2755 sourceKind = SourceKind.PART; 2769 sourceKind = SourceKind.PART;
2756 } 2770 }
2757 // 2771 //
2758 // Record outputs. 2772 // Record outputs.
2759 // 2773 //
2760 List<Source> explicitlyImportedSources = 2774 List<Source> explicitlyImportedSources =
2761 explicitlyImportedSourceSet.toList(); 2775 explicitlyImportedSourceSet.toList();
2762 List<Source> exportedSources = exportedSourceSet.toList(); 2776 List<Source> exportedSources = exportedSourceSet.toList();
2763 List<Source> importedSources = importedSourceSet.toList(); 2777 List<Source> importedSources = importedSourceSet.toList();
2764 List<Source> includedSources = includedSourceSet.toList(); 2778 List<Source> includedSources = includedSourceSet.toList();
2765 List<AnalysisError> parseErrors = 2779 List<AnalysisError> parseErrors =
2766 removeDuplicateErrors(errorListener.errors); 2780 removeDuplicateErrors(errorListener.errors);
2767 List<Source> unitSources = <Source>[source]..addAll(includedSourceSet); 2781 List<Source> unitSources = <Source>[source]..addAll(includedSourceSet);
2768 outputs[EXPLICITLY_IMPORTED_LIBRARIES] = explicitlyImportedSources; 2782 outputs[EXPLICITLY_IMPORTED_LIBRARIES] = explicitlyImportedSources;
2769 outputs[EXPORTED_LIBRARIES] = exportedSources; 2783 outputs[EXPORTED_LIBRARIES] = exportedSources;
2770 outputs[IMPORTED_LIBRARIES] = importedSources; 2784 outputs[IMPORTED_LIBRARIES] = importedSources;
2771 outputs[INCLUDED_PARTS] = includedSources; 2785 outputs[INCLUDED_PARTS] = includedSources;
2772 outputs[PARSE_ERRORS] = parseErrors; 2786 outputs[PARSE_ERRORS] = parseErrors;
2773 outputs[PARSED_UNIT] = unit; 2787 outputs[PARSED_UNIT] = unit;
2774 outputs[SOURCE_KIND] = sourceKind; 2788 outputs[SOURCE_KIND] = sourceKind;
2775 outputs[UNITS] = unitSources; 2789 outputs[UNITS] = unitSources;
2776 } 2790 }
2777 2791
2778 /** 2792 /**
2779 * Return a map from the names of the inputs of this kind of task to the task 2793 * Return a map from the names of the inputs of this kind of task to the task
2780 * input descriptors describing those inputs for a task with the given 2794 * input descriptors describing those inputs for a task with the given
2781 * [source]. 2795 * [source].
2782 */ 2796 */
2783 static Map<String, TaskInput> buildInputs(Source source) { 2797 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
2784 return <String, TaskInput>{ 2798 return <String, TaskInput>{
2785 LINE_INFO_INPUT_NAME: LINE_INFO.of(source), 2799 LINE_INFO_INPUT_NAME: LINE_INFO.of(target),
2786 MODIFICATION_TIME_INPUT_NAME: MODIFICATION_TIME.of(source), 2800 TOKEN_STREAM_INPUT_NAME: TOKEN_STREAM.of(target)
2787 TOKEN_STREAM_INPUT_NAME: TOKEN_STREAM.of(source)
2788 }; 2801 };
2789 } 2802 }
2790 2803
2791 /** 2804 /**
2792 * Create a [ParseDartTask] based on the given [target] in the given 2805 * Create a [ParseDartTask] based on the given [target] in the given
2793 * [context]. 2806 * [context].
2794 */ 2807 */
2795 static ParseDartTask createTask( 2808 static ParseDartTask createTask(
2796 AnalysisContext context, AnalysisTarget target) { 2809 AnalysisContext context, AnalysisTarget target) {
2797 return new ParseDartTask(context, target); 2810 return new ParseDartTask(context, target);
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
2904 void internalPerform() { 2917 void internalPerform() {
2905 LibraryElement library = getRequiredInput(LIBRARY_INPUT); 2918 LibraryElement library = getRequiredInput(LIBRARY_INPUT);
2906 outputs[LIBRARY_ELEMENT] = library; 2919 outputs[LIBRARY_ELEMENT] = library;
2907 } 2920 }
2908 2921
2909 /** 2922 /**
2910 * Return a map from the names of the inputs of this kind of task to the task 2923 * Return a map from the names of the inputs of this kind of task to the task
2911 * input descriptors describing those inputs for a task with the 2924 * input descriptors describing those inputs for a task with the
2912 * given [target]. 2925 * given [target].
2913 */ 2926 */
2914 static Map<String, TaskInput> buildInputs(Source libSource) { 2927 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
2928 Source source = target;
2915 return <String, TaskInput>{ 2929 return <String, TaskInput>{
2916 LIBRARY_INPUT: LIBRARY_ELEMENT6.of(libSource), 2930 LIBRARY_INPUT: LIBRARY_ELEMENT6.of(source),
2917 'resolvedUnits': IMPORT_EXPORT_SOURCE_CLOSURE 2931 'resolvedUnits': IMPORT_EXPORT_SOURCE_CLOSURE
2918 .of(libSource) 2932 .of(source)
2919 .toMapOf(UNITS) 2933 .toMapOf(UNITS)
2920 .toFlattenList((Source library, Source unit) => 2934 .toFlattenList((Source library, Source unit) =>
2921 RESOLVED_UNIT6.of(new LibrarySpecificUnit(library, unit))), 2935 RESOLVED_UNIT6.of(new LibrarySpecificUnit(library, unit))),
2922 }; 2936 };
2923 } 2937 }
2924 2938
2925 /** 2939 /**
2926 * Create a [ResolveLibraryReferencesTask] based on the given [target] in 2940 * Create a [ResolveLibraryReferencesTask] based on the given [target] in
2927 * the given [context]. 2941 * the given [context].
2928 */ 2942 */
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2960 void internalPerform() { 2974 void internalPerform() {
2961 LibraryElement library = getRequiredInput(LIBRARY_INPUT); 2975 LibraryElement library = getRequiredInput(LIBRARY_INPUT);
2962 outputs[LIBRARY_ELEMENT5] = library; 2976 outputs[LIBRARY_ELEMENT5] = library;
2963 } 2977 }
2964 2978
2965 /** 2979 /**
2966 * Return a map from the names of the inputs of this kind of task to the task 2980 * Return a map from the names of the inputs of this kind of task to the task
2967 * input descriptors describing those inputs for a task with the 2981 * input descriptors describing those inputs for a task with the
2968 * given [target]. 2982 * given [target].
2969 */ 2983 */
2970 static Map<String, TaskInput> buildInputs(Source libSource) { 2984 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
2985 Source source = target;
2971 return <String, TaskInput>{ 2986 return <String, TaskInput>{
2972 LIBRARY_INPUT: LIBRARY_ELEMENT4.of(libSource), 2987 LIBRARY_INPUT: LIBRARY_ELEMENT4.of(source),
2973 'resolvedUnits': IMPORT_EXPORT_SOURCE_CLOSURE 2988 'resolvedUnits': IMPORT_EXPORT_SOURCE_CLOSURE
2974 .of(libSource) 2989 .of(source)
2975 .toMapOf(UNITS) 2990 .toMapOf(UNITS)
2976 .toFlattenList((Source library, Source unit) => 2991 .toFlattenList((Source library, Source unit) =>
2977 RESOLVED_UNIT4.of(new LibrarySpecificUnit(library, unit))), 2992 RESOLVED_UNIT4.of(new LibrarySpecificUnit(library, unit))),
2978 }; 2993 };
2979 } 2994 }
2980 2995
2981 /** 2996 /**
2982 * Create a [ResolveLibraryTypeNamesTask] based on the given [target] in 2997 * Create a [ResolveLibraryTypeNamesTask] based on the given [target] in
2983 * the given [context]. 2998 * the given [context].
2984 */ 2999 */
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
3047 outputs[RESOLVE_REFERENCES_ERRORS] = 3062 outputs[RESOLVE_REFERENCES_ERRORS] =
3048 removeDuplicateErrors(errorListener.errors); 3063 removeDuplicateErrors(errorListener.errors);
3049 outputs[RESOLVED_UNIT6] = unit; 3064 outputs[RESOLVED_UNIT6] = unit;
3050 } 3065 }
3051 3066
3052 /** 3067 /**
3053 * Return a map from the names of the inputs of this kind of task to the task 3068 * Return a map from the names of the inputs of this kind of task to the task
3054 * input descriptors describing those inputs for a task with the 3069 * input descriptors describing those inputs for a task with the
3055 * given [target]. 3070 * given [target].
3056 */ 3071 */
3057 static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { 3072 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
3073 LibrarySpecificUnit unit = target;
3058 return <String, TaskInput>{ 3074 return <String, TaskInput>{
3059 LIBRARY_INPUT: LIBRARY_ELEMENT6.of(target.library), 3075 LIBRARY_INPUT: LIBRARY_ELEMENT6.of(unit.library),
3060 UNIT_INPUT: RESOLVED_UNIT5.of(target), 3076 UNIT_INPUT: RESOLVED_UNIT5.of(unit),
3061 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request) 3077 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request)
3062 }; 3078 };
3063 } 3079 }
3064 3080
3065 /** 3081 /**
3066 * Create a [ResolveUnitReferencesTask] based on the given [target] in 3082 * Create a [ResolveUnitReferencesTask] based on the given [target] in
3067 * the given [context]. 3083 * the given [context].
3068 */ 3084 */
3069 static ResolveUnitReferencesTask createTask( 3085 static ResolveUnitReferencesTask createTask(
3070 AnalysisContext context, AnalysisTarget target) { 3086 AnalysisContext context, AnalysisTarget target) {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
3129 outputs[RESOLVE_TYPE_NAMES_ERRORS] = 3145 outputs[RESOLVE_TYPE_NAMES_ERRORS] =
3130 removeDuplicateErrors(errorListener.errors); 3146 removeDuplicateErrors(errorListener.errors);
3131 outputs[RESOLVED_UNIT4] = unit; 3147 outputs[RESOLVED_UNIT4] = unit;
3132 } 3148 }
3133 3149
3134 /** 3150 /**
3135 * Return a map from the names of the inputs of this kind of task to the task 3151 * Return a map from the names of the inputs of this kind of task to the task
3136 * input descriptors describing those inputs for a task with the 3152 * input descriptors describing those inputs for a task with the
3137 * given [target]. 3153 * given [target].
3138 */ 3154 */
3139 static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { 3155 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
3156 LibrarySpecificUnit unit = target;
3140 return <String, TaskInput>{ 3157 return <String, TaskInput>{
3141 LIBRARY_INPUT: LIBRARY_ELEMENT4.of(target.library), 3158 LIBRARY_INPUT: LIBRARY_ELEMENT4.of(unit.library),
3142 UNIT_INPUT: RESOLVED_UNIT3.of(target), 3159 UNIT_INPUT: RESOLVED_UNIT3.of(unit),
3143 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request) 3160 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request)
3144 }; 3161 };
3145 } 3162 }
3146 3163
3147 /** 3164 /**
3148 * Create a [ResolveUnitTypeNamesTask] based on the given [target] in 3165 * Create a [ResolveUnitTypeNamesTask] based on the given [target] in
3149 * the given [context]. 3166 * the given [context].
3150 */ 3167 */
3151 static ResolveUnitTypeNamesTask createTask( 3168 static ResolveUnitTypeNamesTask createTask(
3152 AnalysisContext context, AnalysisTarget target) { 3169 AnalysisContext context, AnalysisTarget target) {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
3210 outputs[RESOLVED_UNIT5] = unit; 3227 outputs[RESOLVED_UNIT5] = unit;
3211 outputs[VARIABLE_REFERENCE_ERRORS] = 3228 outputs[VARIABLE_REFERENCE_ERRORS] =
3212 removeDuplicateErrors(errorListener.errors); 3229 removeDuplicateErrors(errorListener.errors);
3213 } 3230 }
3214 3231
3215 /** 3232 /**
3216 * Return a map from the names of the inputs of this kind of task to the task 3233 * Return a map from the names of the inputs of this kind of task to the task
3217 * input descriptors describing those inputs for a task with the 3234 * input descriptors describing those inputs for a task with the
3218 * given [target]. 3235 * given [target].
3219 */ 3236 */
3220 static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { 3237 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
3238 LibrarySpecificUnit unit = target;
3221 return <String, TaskInput>{ 3239 return <String, TaskInput>{
3222 'fullyBuiltLibraryElements': IMPORT_EXPORT_SOURCE_CLOSURE 3240 'fullyBuiltLibraryElements': IMPORT_EXPORT_SOURCE_CLOSURE
3223 .of(target.library) 3241 .of(unit.library)
3224 .toListOf(LIBRARY_ELEMENT6), 3242 .toListOf(LIBRARY_ELEMENT6),
3225 LIBRARY_INPUT: LIBRARY_ELEMENT6.of(target.library), 3243 LIBRARY_INPUT: LIBRARY_ELEMENT6.of(unit.library),
3226 UNIT_INPUT: RESOLVED_UNIT4.of(target), 3244 UNIT_INPUT: RESOLVED_UNIT4.of(unit),
3227 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request) 3245 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request)
3228 }; 3246 };
3229 } 3247 }
3230 3248
3231 /** 3249 /**
3232 * Create a [ResolveVariableReferencesTask] based on the given [target] in 3250 * Create a [ResolveVariableReferencesTask] based on the given [target] in
3233 * the given [context]. 3251 * the given [context].
3234 */ 3252 */
3235 static ResolveVariableReferencesTask createTask( 3253 static ResolveVariableReferencesTask createTask(
3236 AnalysisContext context, AnalysisTarget target) { 3254 AnalysisContext context, AnalysisTarget target) {
(...skipping 26 matching lines...) Expand all
3263 */ 3281 */
3264 ScanDartTask(InternalAnalysisContext context, AnalysisTarget target) 3282 ScanDartTask(InternalAnalysisContext context, AnalysisTarget target)
3265 : super(context, target); 3283 : super(context, target);
3266 3284
3267 @override 3285 @override
3268 TaskDescriptor get descriptor => DESCRIPTOR; 3286 TaskDescriptor get descriptor => DESCRIPTOR;
3269 3287
3270 @override 3288 @override
3271 void internalPerform() { 3289 void internalPerform() {
3272 Source source = getRequiredSource(); 3290 Source source = getRequiredSource();
3273 String content = getRequiredInput(CONTENT_INPUT_NAME); 3291 if (target is DartScript) {
3292 DartScript script = target;
3293 List<ScriptFragment> fragments = script.fragments;
3294 if (fragments.length < 1) {
3295 throw new AnalysisException('Cannot scan scripts with no fragments');
3296 } else if (fragments.length > 1) {
3297 throw new AnalysisException(
3298 'Cannot scan scripts with multiple fragments');
3299 }
3300 ScriptFragment fragment = fragments[0];
3274 3301
3275 RecordingErrorListener errorListener = new RecordingErrorListener(); 3302 RecordingErrorListener errorListener = new RecordingErrorListener();
3276 Scanner scanner = 3303 Scanner scanner = new Scanner(source,
3277 new Scanner(source, new CharSequenceReader(content), errorListener); 3304 new SubSequenceReader(fragment.content, fragment.offset),
3278 scanner.preserveComments = context.analysisOptions.preserveComments; 3305 errorListener);
3279 scanner.enableNullAwareOperators = 3306 scanner.setSourceStart(fragment.line, fragment.column);
3280 context.analysisOptions.enableNullAwareOperators; 3307 scanner.preserveComments = context.analysisOptions.preserveComments;
3308 scanner.enableNullAwareOperators =
3309 context.analysisOptions.enableNullAwareOperators;
3281 3310
3282 outputs[TOKEN_STREAM] = scanner.tokenize(); 3311 outputs[TOKEN_STREAM] = scanner.tokenize();
3283 outputs[LINE_INFO] = new LineInfo(scanner.lineStarts); 3312 outputs[LINE_INFO] = new LineInfo(scanner.lineStarts);
3284 outputs[SCAN_ERRORS] = removeDuplicateErrors(errorListener.errors); 3313 outputs[SCAN_ERRORS] = removeDuplicateErrors(errorListener.errors);
3314 } else if (target is Source) {
3315 String content = getRequiredInput(CONTENT_INPUT_NAME);
3316
3317 RecordingErrorListener errorListener = new RecordingErrorListener();
3318 Scanner scanner =
3319 new Scanner(source, new CharSequenceReader(content), errorListener);
3320 scanner.preserveComments = context.analysisOptions.preserveComments;
3321 scanner.enableNullAwareOperators =
3322 context.analysisOptions.enableNullAwareOperators;
3323
3324 outputs[TOKEN_STREAM] = scanner.tokenize();
3325 outputs[LINE_INFO] = new LineInfo(scanner.lineStarts);
3326 outputs[SCAN_ERRORS] = removeDuplicateErrors(errorListener.errors);
3327 } else {
3328 throw new AnalysisException(
3329 'Cannot scan Dart code from a ${target.runtimeType}');
3330 }
3285 } 3331 }
3286 3332
3287 /** 3333 /**
3288 * Return a map from the names of the inputs of this kind of task to the task 3334 * Return a map from the names of the inputs of this kind of task to the task
3289 * input descriptors describing those inputs for a task with the given 3335 * input descriptors describing those inputs for a task with the given
3290 * [source]. 3336 * [source].
3291 */ 3337 */
3292 static Map<String, TaskInput> buildInputs(Source source) { 3338 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
3293 return <String, TaskInput>{CONTENT_INPUT_NAME: CONTENT.of(source)}; 3339 if (target is Source) {
3340 return <String, TaskInput>{CONTENT_INPUT_NAME: CONTENT.of(target)};
3341 } else if (target is DartScript) {
3342 // This task does not use the following input; it is included only to add
3343 // a dependency between this value and the containing source so that when
3344 // the containing source is modified these results will be invalidated.
3345 return <String, TaskInput>{'-': DART_SCRIPTS.of(target.source)};
3346 }
3347 throw new AnalysisException(
3348 'Cannot build inputs for a ${target.runtimeType}');
3294 } 3349 }
3295 3350
3296 /** 3351 /**
3297 * Create a [ScanDartTask] based on the given [target] in the given [context]. 3352 * Create a [ScanDartTask] based on the given [target] in the given [context].
3298 */ 3353 */
3299 static ScanDartTask createTask( 3354 static ScanDartTask createTask(
3300 AnalysisContext context, AnalysisTarget target) { 3355 AnalysisContext context, AnalysisTarget target) {
3301 return new ScanDartTask(context, target); 3356 return new ScanDartTask(context, target);
3302 } 3357 }
3303 } 3358 }
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
3398 StringLiteral uriLiteral = directive.uri; 3453 StringLiteral uriLiteral = directive.uri;
3399 errorReporter.reportErrorForNode(CompileTimeErrorCode.URI_DOES_NOT_EXIST, 3454 errorReporter.reportErrorForNode(CompileTimeErrorCode.URI_DOES_NOT_EXIST,
3400 uriLiteral, [directive.uriContent]); 3455 uriLiteral, [directive.uriContent]);
3401 } 3456 }
3402 3457
3403 /** 3458 /**
3404 * Return a map from the names of the inputs of this kind of task to the task 3459 * Return a map from the names of the inputs of this kind of task to the task
3405 * input descriptors describing those inputs for a task with the 3460 * input descriptors describing those inputs for a task with the
3406 * given [target]. 3461 * given [target].
3407 */ 3462 */
3408 static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { 3463 static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
3464 LibrarySpecificUnit unit = target;
3409 return <String, TaskInput>{ 3465 return <String, TaskInput>{
3410 'resolvedUnits': IMPORT_EXPORT_SOURCE_CLOSURE 3466 'resolvedUnits': IMPORT_EXPORT_SOURCE_CLOSURE
3411 .of(target.library) 3467 .of(unit.library)
3412 .toMapOf(UNITS) 3468 .toMapOf(UNITS)
3413 .toFlattenList((Source library, Source unit) => 3469 .toFlattenList((Source library, Source unit) =>
3414 RESOLVED_UNIT.of(new LibrarySpecificUnit(library, unit))), 3470 RESOLVED_UNIT.of(new LibrarySpecificUnit(library, unit))),
3415 UNIT_INPUT: RESOLVED_UNIT.of(target), 3471 UNIT_INPUT: RESOLVED_UNIT.of(unit),
3416 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request) 3472 TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request)
3417 }; 3473 };
3418 } 3474 }
3419 3475
3420 /** 3476 /**
3421 * Create a [VerifyUnitTask] based on the given [target] in 3477 * Create a [VerifyUnitTask] based on the given [target] in
3422 * the given [context]. 3478 * the given [context].
3423 */ 3479 */
3424 static VerifyUnitTask createTask( 3480 static VerifyUnitTask createTask(
3425 AnalysisContext context, AnalysisTarget target) { 3481 AnalysisContext context, AnalysisTarget target) {
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
3527 @override 3583 @override
3528 bool moveNext() { 3584 bool moveNext() {
3529 if (_newSources.isEmpty) { 3585 if (_newSources.isEmpty) {
3530 return false; 3586 return false;
3531 } 3587 }
3532 currentTarget = _newSources.first; 3588 currentTarget = _newSources.first;
3533 _newSources.remove(currentTarget); 3589 _newSources.remove(currentTarget);
3534 return true; 3590 return true;
3535 } 3591 }
3536 } 3592 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/plugin/engine_plugin.dart ('k') | pkg/analyzer/lib/src/task/driver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698