1
0
mirror of https://github.com/dart-lang/sdk synced 2024-07-08 12:06:26 +00:00

Explain why we need SourceFactory.clone().

R=brianwilkerson@google.com, paulberry@google.com
BUG=

Review URL: https://codereview.chromium.org/2468583002 .
This commit is contained in:
Konstantin Shcheglov 2016-10-31 12:18:42 -07:00
parent b39d156ea6
commit ba382b6ce4

View File

@ -12,7 +12,6 @@ import 'package:analyzer/error/error.dart';
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/context/context.dart';
import 'package:analyzer/src/context/source.dart';
import 'package:analyzer/src/dart/analysis/byte_store.dart';
import 'package:analyzer/src/dart/scanner/reader.dart';
import 'package:analyzer/src/dart/scanner/scanner.dart';
@ -177,6 +176,12 @@ class AnalysisDriver {
*/
AnalysisStatus _currentStatus = AnalysisStatus.IDLE;
/**
* Create a new instance of [AnalysisDriver].
*
* The given [SourceFactory] is cloned to ensure that it does not contain a
* reference to a [AnalysisContext] in which it could have been used.
*/
AnalysisDriver(this._logger, this._resourceProvider, this._byteStore,
this._contentCache, SourceFactory sourceFactory, this._analysisOptions)
: _sourceFactory = sourceFactory.clone() {
@ -499,8 +504,7 @@ class AnalysisDriver {
AnalysisEngine.instance.createAnalysisContext();
analysisContext.analysisOptions = _analysisOptions;
analysisContext.sourceFactory =
new SourceFactory((_sourceFactory as SourceFactoryImpl).resolvers);
analysisContext.sourceFactory = _sourceFactory.clone();
analysisContext.resultProvider =
new InputPackagesResultProvider(analysisContext, libraryContext.store);
analysisContext