| Index: pkg/analyzer/lib/src/context/context.dart
|
| diff --git a/pkg/analyzer/lib/src/context/context.dart b/pkg/analyzer/lib/src/context/context.dart
|
| index ac007d4751199bce91a043499d41cc2df3582101..2b96387301d51d83f755adae453f163910b80d62 100644
|
| --- a/pkg/analyzer/lib/src/context/context.dart
|
| +++ b/pkg/analyzer/lib/src/context/context.dart
|
| @@ -33,6 +33,8 @@ import 'package:analyzer/src/generated/utilities_collection.dart';
|
| import 'package:analyzer/src/task/dart.dart';
|
| import 'package:analyzer/src/task/dart_work_manager.dart';
|
| import 'package:analyzer/src/task/driver.dart';
|
| +import 'package:analyzer/src/task/html.dart';
|
| +import 'package:analyzer/src/task/html_work_manager.dart';
|
| import 'package:analyzer/src/task/manager.dart';
|
| import 'package:analyzer/task/dart.dart';
|
| import 'package:analyzer/task/general.dart';
|
| @@ -124,6 +126,11 @@ class AnalysisContextImpl implements InternalAnalysisContext {
|
| DartWorkManager dartWorkManager;
|
|
|
| /**
|
| + * The work manager that performs HTML specific scheduling.
|
| + */
|
| + HtmlWorkManager htmlWorkManager;
|
| +
|
| + /**
|
| * The analysis driver used to perform analysis.
|
| */
|
| AnalysisDriver driver;
|
| @@ -212,8 +219,9 @@ class AnalysisContextImpl implements InternalAnalysisContext {
|
| _taskManager = AnalysisEngine.instance.taskManager;
|
| // TODO(scheglov) Get WorkManager(Factory)(s) from plugins.
|
| dartWorkManager = new DartWorkManager(this);
|
| - driver =
|
| - new AnalysisDriver(_taskManager, <WorkManager>[dartWorkManager], this);
|
| + htmlWorkManager = new HtmlWorkManager(this);
|
| + driver = new AnalysisDriver(
|
| + _taskManager, <WorkManager>[dartWorkManager, htmlWorkManager], this);
|
| _onSourcesChangedController =
|
| new StreamController<SourcesChangedEvent>.broadcast();
|
| }
|
| @@ -257,6 +265,7 @@ class AnalysisContextImpl implements InternalAnalysisContext {
|
| this._options.preserveComments = options.preserveComments;
|
| if (needsRecompute) {
|
| dartWorkManager.onAnalysisOptionsChanged();
|
| + htmlWorkManager.onAnalysisOptionsChanged();
|
| }
|
| }
|
|
|
| @@ -275,6 +284,7 @@ class AnalysisContextImpl implements InternalAnalysisContext {
|
| }
|
| }
|
| dartWorkManager.applyPriorityTargets(_priorityOrder);
|
| + htmlWorkManager.applyPriorityTargets(_priorityOrder);
|
| }
|
|
|
| @override
|
| @@ -372,6 +382,7 @@ class AnalysisContextImpl implements InternalAnalysisContext {
|
| _sourceFactory = factory;
|
| _cache = createCacheFromSourceFactory(factory);
|
| dartWorkManager.onSourceFactoryChanged();
|
| + htmlWorkManager.onSourceFactoryChanged();
|
| }
|
|
|
| @override
|
| @@ -522,6 +533,8 @@ class AnalysisContextImpl implements InternalAnalysisContext {
|
| }
|
| dartWorkManager.applyChange(
|
| changeSet.addedSources, changeSet.changedSources, removedSources);
|
| + htmlWorkManager.applyChange(
|
| + changeSet.addedSources, changeSet.changedSources, removedSources);
|
| _onSourcesChangedController.add(new SourcesChangedEvent(changeSet));
|
| }
|
|
|
| @@ -769,12 +782,10 @@ class AnalysisContextImpl implements InternalAnalysisContext {
|
| @override
|
| AnalysisErrorInfo getErrors(Source source) {
|
| String name = source.shortName;
|
| - if (AnalysisEngine.isDartFileName(name)) {
|
| + if (AnalysisEngine.isDartFileName(name) || source is DartScript) {
|
| return dartWorkManager.getErrors(source);
|
| } else if (AnalysisEngine.isHtmlFileName(name)) {
|
| - List<AnalysisError> errors = analysisCache.getValue(source, HTML_ERRORS);
|
| - // TODO(brianwilkerson) We don't currently have line info for HTML files.
|
| - return new AnalysisErrorInfoImpl(errors, null);
|
| + return htmlWorkManager.getErrors(source);
|
| }
|
| return new AnalysisErrorInfoImpl(AnalysisError.NO_ERRORS, null);
|
| }
|
| @@ -1702,6 +1713,8 @@ class AnalysisContextImpl implements InternalAnalysisContext {
|
| entry.setState(CONTENT, CacheState.INVALID);
|
| dartWorkManager.applyChange(
|
| Source.EMPTY_LIST, <Source>[source], Source.EMPTY_LIST);
|
| + htmlWorkManager.applyChange(
|
| + Source.EMPTY_LIST, <Source>[source], Source.EMPTY_LIST);
|
| }
|
|
|
| /**
|
|
|