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

Unified Diff: pkg/analyzer/lib/src/task/dart.dart

Issue 1406923006: Replace some LIBRARY_ELEMENTx dependency for closure with READY_LIBRARY_ELEMENTx. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Update comments. Created 5 years, 2 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 side-by-side diff with in-line comments
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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/task/dart.dart
diff --git a/pkg/analyzer/lib/src/task/dart.dart b/pkg/analyzer/lib/src/task/dart.dart
index dfee11b9ed64e51ad24b1c999842254f6b8a2854..64ba3d19e864ea133842974bf2cd4c40fa759cee 100644
--- a/pkg/analyzer/lib/src/task/dart.dart
+++ b/pkg/analyzer/lib/src/task/dart.dart
@@ -347,7 +347,26 @@ final ListResultDescriptor<AnalysisError> PARSE_ERRORS =
'PARSE_ERRORS', AnalysisError.NO_ERRORS);
/**
- * The flag specifying that [RESOLVED_UNIT] is ready for a library.
+ * The flag specifying that [LIBRARY_ELEMENT2] is ready for a library and its
+ * import/export closure.
+ *
+ * The result is only available for [Source]s representing a library.
+ */
+final ResultDescriptor<bool> READY_LIBRARY_ELEMENT2 =
+ new ResultDescriptor<bool>('READY_LIBRARY_ELEMENT2', false);
+
+/**
+ * The flag specifying that [LIBRARY_ELEMENT5] is ready for a library and its
+ * import/export closure.
+ *
+ * The result is only available for [Source]s representing a library.
+ */
+final ResultDescriptor<bool> READY_LIBRARY_ELEMENT5 =
+ new ResultDescriptor<bool>('READY_LIBRARY_ELEMENT5', false);
+
+/**
+ * The flag specifying that [RESOLVED_UNIT] is ready for all of the units of a
+ * library and its import/export closure.
*
* The result is only available for [Source]s representing a library.
*/
@@ -355,7 +374,8 @@ final ResultDescriptor<bool> READY_RESOLVED_UNIT =
new ResultDescriptor<bool>('READY_RESOLVED_UNIT', false);
/**
- * The flag specifying that [RESOLVED_UNIT10] is ready for a library.
+ * The flag specifying that [RESOLVED_UNIT10] is ready for all of the units of a
+ * library and its import/export closure.
*
* The result is only available for [Source]s representing a library.
*/
@@ -363,7 +383,8 @@ final ResultDescriptor<bool> READY_RESOLVED_UNIT10 =
new ResultDescriptor<bool>('READY_RESOLVED_UNIT10', false);
/**
- * The flag specifying that [RESOLVED_UNIT9] is ready for a library.
+ * The flag specifying that [RESOLVED_UNIT9] is ready for all of the units of a
+ * library and its import/export closure.
*
* The result is only available for [Source]s representing a library.
*/
@@ -1943,10 +1964,8 @@ class ComputeLibraryCycleTask extends SourceBasedAnalysisTask {
static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
LibrarySpecificUnit unit = target;
return <String, TaskInput>{
- 'resolveReachableLibraries': IMPORT_EXPORT_SOURCE_CLOSURE
- .of(unit.library)
- .toListOf(LIBRARY_ELEMENT2),
- LIBRARY_ELEMENT_INPUT: LIBRARY_ELEMENT2.of(unit.library)
+ LIBRARY_ELEMENT_INPUT: LIBRARY_ELEMENT2.of(unit.library),
+ 'resolveReachableLibraries': READY_LIBRARY_ELEMENT2.of(unit.library),
};
}
@@ -3478,9 +3497,7 @@ class PartiallyResolveUnitReferencesTask extends SourceBasedAnalysisTask {
static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
LibrarySpecificUnit unit = target;
return <String, TaskInput>{
- 'fullyBuiltLibraryElements': IMPORT_EXPORT_SOURCE_CLOSURE
- .of(unit.library)
- .toListOf(LIBRARY_ELEMENT5),
+ 'fullyBuiltLibraryElements': READY_LIBRARY_ELEMENT5.of(unit.library),
LIBRARY_INPUT: LIBRARY_ELEMENT5.of(unit.library),
UNIT_INPUT: RESOLVED_UNIT4.of(unit),
TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request),
@@ -3545,6 +3562,125 @@ class PublicNamespaceBuilder {
}
/**
+ * A task that ensures that [LIBRARY_ELEMENT2] is ready for the target library
+ * source and its import/export closure.
+ */
+class ReadyLibraryElement2Task extends SourceBasedAnalysisTask {
+ static const String IS_CLIENT_LIST_INPUT1 = 'IS_CLIENT_LIST_INPUT1';
+ static const String IS_CLIENT_LIST_INPUT2 = 'IS_CLIENT_LIST_INPUT2';
+
+ static final TaskDescriptor DESCRIPTOR = new TaskDescriptor(
+ 'ReadyLibraryElement2Task',
+ createTask,
+ buildInputs,
+ <ResultDescriptor>[READY_LIBRARY_ELEMENT2, IS_CLIENT]);
+
+ ReadyLibraryElement2Task(
+ InternalAnalysisContext context, AnalysisTarget target)
+ : super(context, target);
+
+ @override
+ TaskDescriptor get descriptor => DESCRIPTOR;
+
+ @override
+ bool get handlesDependencyCycles => true;
+
+ @override
+ void internalPerform() {
+ bool isClient = _isClient();
+ outputs[READY_LIBRARY_ELEMENT2] = true;
+ outputs[IS_CLIENT] = isClient;
+ }
+
+ bool _isClient() {
+ Source htmlSource = context.sourceFactory.forUri(DartSdk.DART_HTML);
+ Source source = getRequiredSource();
+ if (source == htmlSource) {
+ return true;
+ }
+ if (_hasTrueElement(getRequiredInput(IS_CLIENT_LIST_INPUT1))) {
+ return true;
+ }
+ if (_hasTrueElement(getRequiredInput(IS_CLIENT_LIST_INPUT2))) {
+ return true;
+ }
+ return false;
+ }
+
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
+ Source source = target;
+ return <String, TaskInput>{
+ 'thisLibraryElementReady': LIBRARY_ELEMENT2.of(source),
+ IS_CLIENT_LIST_INPUT1: IMPORTED_LIBRARIES.of(source).toListOf(IS_CLIENT),
+ IS_CLIENT_LIST_INPUT2: EXPORTED_LIBRARIES.of(source).toListOf(IS_CLIENT),
+ 'directlyImportedLibrariesReady':
+ IMPORTED_LIBRARIES.of(source).toListOf(READY_LIBRARY_ELEMENT2),
+ 'directlyExportedLibrariesReady':
+ EXPORTED_LIBRARIES.of(source).toListOf(READY_LIBRARY_ELEMENT2),
+ };
+ }
+
+ static ReadyLibraryElement2Task createTask(
+ AnalysisContext context, AnalysisTarget target) {
+ return new ReadyLibraryElement2Task(context, target);
+ }
+
+ static bool _hasTrueElement(List<bool> elements) {
+ if (elements != null) {
+ for (bool isClient in elements) {
+ if (isClient == true) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+}
+
+/**
+ * A task that ensures that [LIBRARY_ELEMENT5] is ready for the target library
+ * source and its import/export closure.
+ */
+class ReadyLibraryElement5Task extends SourceBasedAnalysisTask {
+ static final TaskDescriptor DESCRIPTOR = new TaskDescriptor(
+ 'ReadyLibraryElement5Task',
+ createTask,
+ buildInputs,
+ <ResultDescriptor>[READY_LIBRARY_ELEMENT5]);
+
+ ReadyLibraryElement5Task(
+ InternalAnalysisContext context, AnalysisTarget target)
+ : super(context, target);
+
+ @override
+ TaskDescriptor get descriptor => DESCRIPTOR;
+
+ @override
+ bool get handlesDependencyCycles => true;
+
+ @override
+ void internalPerform() {
+ outputs[READY_LIBRARY_ELEMENT5] = true;
+ }
+
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
+ Source source = target;
+ return <String, TaskInput>{
+ 'thisLibraryElementReady': LIBRARY_ELEMENT5.of(source),
+ 'directlyImportedLibrariesReady':
+ IMPORTED_LIBRARIES.of(source).toListOf(READY_LIBRARY_ELEMENT5),
+ 'directlyExportedLibrariesReady':
+ EXPORTED_LIBRARIES.of(source).toListOf(READY_LIBRARY_ELEMENT5),
+ };
+ }
+
+ static ReadyLibraryElement5Task createTask(
+ AnalysisContext context, AnalysisTarget target) {
+ return new ReadyLibraryElement5Task(context, target);
+ }
+}
+
+/**
* A task that ensures that [RESOLVED_UNIT10] is ready for every unit of the
* target library source and its import/export closure.
*/
@@ -3963,7 +4099,7 @@ class ResolveLibraryReferencesTask extends SourceBasedAnalysisTask {
}
/**
- * An artifitial task that does nothing except to force type names resolution
+ * An artificial task that does nothing except to force type names resolution
* for the defining and part units of a library.
*/
class ResolveLibraryTypeNamesTask extends SourceBasedAnalysisTask {
« 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