Index: packages/analyzer/lib/src/task/dart_work_manager.dart |
diff --git a/analyzer/lib/src/task/dart_work_manager.dart b/packages/analyzer/lib/src/task/dart_work_manager.dart |
similarity index 92% |
rename from analyzer/lib/src/task/dart_work_manager.dart |
rename to packages/analyzer/lib/src/task/dart_work_manager.dart |
index c02d5947da900b2c1798caf1c673e9f894967cbb..7114053c19154f602d072ceb22e691bc2a3605bb 100644 |
--- a/analyzer/lib/src/task/dart_work_manager.dart |
+++ b/packages/analyzer/lib/src/task/dart_work_manager.dart |
@@ -19,9 +19,8 @@ import 'package:analyzer/src/generated/error.dart'; |
import 'package:analyzer/src/generated/source.dart'; |
import 'package:analyzer/src/generated/utilities_collection.dart'; |
import 'package:analyzer/src/task/dart.dart'; |
-import 'package:analyzer/src/task/driver.dart'; |
+import 'package:analyzer/src/task/html.dart'; |
import 'package:analyzer/task/dart.dart'; |
-import 'package:analyzer/task/general.dart'; |
import 'package:analyzer/task/model.dart'; |
/** |
@@ -43,8 +42,10 @@ class DartWorkManager implements WorkManager { |
*/ |
static final List<ResultDescriptor> _UNIT_ERRORS = <ResultDescriptor>[ |
HINTS, |
- RESOLVE_REFERENCES_ERRORS, |
+ LINTS, |
+ LIBRARY_UNIT_ERRORS, |
RESOLVE_TYPE_NAMES_ERRORS, |
+ RESOLVE_UNIT_ERRORS, |
VARIABLE_REFERENCE_ERRORS, |
VERIFY_ERRORS |
]; |
@@ -113,9 +114,7 @@ class DartWorkManager implements WorkManager { |
priorityResultQueue.add(new TargetedResult(target, result)); |
} |
- /** |
- * Notifies the manager about changes in the explicit source list. |
- */ |
+ @override |
void applyChange(List<Source> addedSources, List<Source> changedSources, |
List<Source> removedSources) { |
addedSources = addedSources.where(_isDartSource).toList(); |
@@ -166,18 +165,16 @@ class DartWorkManager implements WorkManager { |
} |
} |
- /** |
- * Return an [AnalysisErrorInfo] containing the list of all of the errors and |
- * the line info associated with the given [source]. The list of errors will |
- * be empty if the source is not known to the context or if there are no |
- * errors in the source. The errors contained in the list can be incomplete. |
- */ |
- AnalysisErrorInfo getErrors(Source source) { |
+ @override |
+ List<AnalysisError> getErrors(Source source) { |
+ if (!_isDartSource(source) && source is! DartScript) { |
+ return AnalysisError.NO_ERRORS; |
+ } |
+ // If analysis is finished, use all the errors. |
if (analysisCache.getState(source, DART_ERRORS) == CacheState.VALID) { |
- List<AnalysisError> errors = analysisCache.getValue(source, DART_ERRORS); |
- LineInfo lineInfo = analysisCache.getValue(source, LINE_INFO); |
- return new AnalysisErrorInfoImpl(errors, lineInfo); |
+ return analysisCache.getValue(source, DART_ERRORS); |
} |
+ // If analysis is in progress, combine all known partial results. |
List<AnalysisError> errors = <AnalysisError>[]; |
for (ResultDescriptor descriptor in _SOURCE_ERRORS) { |
errors.addAll(analysisCache.getValue(source, descriptor)); |
@@ -188,8 +185,7 @@ class DartWorkManager implements WorkManager { |
errors.addAll(analysisCache.getValue(unit, descriptor)); |
} |
} |
- LineInfo lineInfo = analysisCache.getValue(source, LINE_INFO); |
- return new AnalysisErrorInfoImpl(errors, lineInfo); |
+ return errors; |
} |
/** |
@@ -268,13 +264,16 @@ class DartWorkManager implements WorkManager { |
@override |
void resultsComputed( |
AnalysisTarget target, Map<ResultDescriptor, dynamic> outputs) { |
+ bool isDartSource = _isDartSource(target); |
// Organize sources. |
- if (_isDartSource(target)) { |
+ bool isDartLibrarySource = false; |
+ if (isDartSource) { |
Source source = target; |
SourceKind kind = outputs[SOURCE_KIND]; |
if (kind != null) { |
unknownSourceQueue.remove(source); |
if (kind == SourceKind.LIBRARY) { |
+ isDartLibrarySource = true; |
if (context.prioritySources.contains(source)) { |
_schedulePriorityLibrarySourceAnalysis(source); |
} else { |
@@ -287,7 +286,7 @@ class DartWorkManager implements WorkManager { |
} |
} |
// Update parts in libraries. |
- if (_isDartSource(target)) { |
+ if (isDartLibrarySource) { |
Source library = target; |
List<Source> includedParts = outputs[INCLUDED_PARTS]; |
if (includedParts != null) { |
@@ -303,7 +302,7 @@ class DartWorkManager implements WorkManager { |
} |
} |
// Update notice. |
- if (_isDartSource(target)) { |
+ if (isDartSource) { |
bool shouldSetErrors = false; |
outputs.forEach((ResultDescriptor descriptor, value) { |
if (descriptor == PARSED_UNIT && value != null) { |
@@ -315,7 +314,7 @@ class DartWorkManager implements WorkManager { |
} |
}); |
if (shouldSetErrors) { |
- AnalysisErrorInfo info = getErrors(target); |
+ AnalysisErrorInfo info = context.getErrors(target); |
context.getNotice(target).setErrors(info.errors, info.lineInfo); |
} |
} |
@@ -329,7 +328,7 @@ class DartWorkManager implements WorkManager { |
} |
}); |
if (shouldSetErrors) { |
- AnalysisErrorInfo info = getErrors(source); |
+ AnalysisErrorInfo info = context.getErrors(source); |
context.getNotice(source).setErrors(info.errors, info.lineInfo); |
} |
} |