mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 03:07:49 +00:00
Kernel driver: pass options and use it for its compiler context
This ensures we don't accidentally override options (e.g. strongMode was being overriden accidentally as a result). R=scheglov@google.com Review-Url: https://codereview.chromium.org/2992773002 .
This commit is contained in:
parent
a67d798841
commit
13a4906be9
|
@ -12,8 +12,10 @@ import 'package:analyzer/src/dart/element/element.dart';
|
|||
import 'package:analyzer/src/generated/source.dart';
|
||||
import 'package:analyzer/src/kernel/resynthesize.dart';
|
||||
import 'package:analyzer/src/summary/resynthesize.dart';
|
||||
import 'package:front_end/compiler_options.dart';
|
||||
import 'package:front_end/file_system.dart';
|
||||
import 'package:front_end/src/base/performace_logger.dart';
|
||||
import 'package:front_end/src/base/processed_options.dart';
|
||||
import 'package:front_end/src/fasta/uri_translator_impl.dart';
|
||||
import 'package:front_end/src/incremental/byte_store.dart';
|
||||
import 'package:front_end/src/incremental/kernel_driver.dart';
|
||||
|
@ -79,12 +81,14 @@ class ResynthesizeKernelStrongTest extends ResynthesizeTest {
|
|||
|
||||
var uriTranslator =
|
||||
new UriTranslatorImpl(dartLibraries, {}, Packages.noPackages);
|
||||
var driver = new KernelDriver(
|
||||
new PerformanceLog(null),
|
||||
new _FileSystemAdaptor(resourceProvider),
|
||||
new MemoryByteStore(),
|
||||
uriTranslator,
|
||||
new NoneTarget(new TargetFlags(strongMode: isStrongMode)));
|
||||
var options = new ProcessedOptions(new CompilerOptions()
|
||||
..target = new NoneTarget(new TargetFlags(strongMode: isStrongMode))
|
||||
..reportMessages = false
|
||||
..logger = new PerformanceLog(null)
|
||||
..fileSystem = new _FileSystemAdaptor(resourceProvider)
|
||||
..byteStore = new MemoryByteStore());
|
||||
var driver = new KernelDriver(options.logger, options.fileSystem,
|
||||
options.byteStore, uriTranslator, options);
|
||||
|
||||
KernelResult kernelResult = await driver.getKernel(testUri);
|
||||
|
||||
|
|
|
@ -34,6 +34,10 @@ Future<IncrementalCompiler> createIncrementalCompiler(String entry,
|
|||
..packagesFileUri = Uri.base.resolve('.packages')
|
||||
..strongMode = false
|
||||
..dartLibraries = loadDartLibraries(sdkRoot)
|
||||
// Note: we do not report error on the console because the incremental
|
||||
// compiler is an ongoing background service that shouldn't polute stdout.
|
||||
// TODO(sigmund): do something with the errors.
|
||||
..onError = (_) {}
|
||||
..byteStore =
|
||||
persistent ? new FileByteStore(tmpDir.path) : new MemoryByteStore();
|
||||
return IncrementalCompiler.create(options, entryUri);
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:front_end/compiler_options.dart';
|
||||
import 'package:front_end/file_system.dart';
|
||||
import 'package:front_end/src/base/api_signature.dart';
|
||||
import 'package:front_end/src/base/performace_logger.dart';
|
||||
|
@ -22,7 +21,6 @@ import 'package:kernel/binary/ast_from_binary.dart';
|
|||
import 'package:kernel/core_types.dart';
|
||||
import 'package:kernel/kernel.dart' hide Source;
|
||||
import 'package:kernel/src/incremental_class_hierarchy.dart';
|
||||
import 'package:kernel/target/targets.dart' show Target;
|
||||
import 'package:kernel/type_environment.dart';
|
||||
import 'package:meta/meta.dart';
|
||||
|
||||
|
@ -62,8 +60,8 @@ class KernelDriver {
|
|||
/// The object that knows how to resolve "package:" and "dart:" URIs.
|
||||
final UriTranslator _uriTranslator;
|
||||
|
||||
/// The backend target to generate kernels for.
|
||||
final Target _target;
|
||||
/// Options used by the kernel compiler.
|
||||
final ProcessedOptions _options;
|
||||
|
||||
/// The function that is invoked when a new file is about to be added to
|
||||
/// the current file state. The [Future] that it returns is awaited before
|
||||
|
@ -84,7 +82,7 @@ class KernelDriver {
|
|||
final _TestView _testView = new _TestView();
|
||||
|
||||
KernelDriver(this._logger, this._fileSystem, this._byteStore,
|
||||
this._uriTranslator, this._target,
|
||||
this._uriTranslator, this._options,
|
||||
{KernelDriverFileAddedFn fileAddedFn})
|
||||
: _fileAddedFn = fileAddedFn {
|
||||
_computeSalt();
|
||||
|
@ -135,8 +133,8 @@ class KernelDriver {
|
|||
});
|
||||
|
||||
CanonicalName nameRoot = new CanonicalName.root();
|
||||
DillTarget dillTarget =
|
||||
new DillTarget(new Ticker(isVerbose: false), _uriTranslator, _target);
|
||||
DillTarget dillTarget = new DillTarget(
|
||||
new Ticker(isVerbose: false), _uriTranslator, _options.target);
|
||||
|
||||
List<LibraryCycleResult> results = [];
|
||||
_testView.compiledCycles.clear();
|
||||
|
@ -171,15 +169,8 @@ class KernelDriver {
|
|||
}
|
||||
|
||||
Future<T> runWithFrontEndContext<T>(String msg, Future<T> f()) async {
|
||||
var options = new CompilerOptions()
|
||||
..target = _target
|
||||
// Note: we do not report error on the console because the driver is an
|
||||
// ongoing background service that shouldn't polute stdout.
|
||||
// TODO(scheglov,sigmund): add an error handler to forward errors to
|
||||
// analyzer driver and incremental kernel generator.
|
||||
..reportMessages = false;
|
||||
return await CompilerContext.runWithOptions(
|
||||
new ProcessedOptions(options), (_) => _logger.runAsync(msg, f));
|
||||
_options, (_) => _logger.runAsync(msg, f));
|
||||
}
|
||||
|
||||
/// Return the [TypeEnvironment] that corresponds to the [results].
|
||||
|
@ -303,7 +294,7 @@ class KernelDriver {
|
|||
void _computeSalt() {
|
||||
var saltBuilder = new ApiSignature();
|
||||
saltBuilder.addInt(DATA_VERSION);
|
||||
saltBuilder.addBool(_target.strongMode);
|
||||
saltBuilder.addBool(_options.strongMode);
|
||||
_salt = saltBuilder.toByteList();
|
||||
}
|
||||
|
||||
|
|
|
@ -11,8 +11,6 @@ import 'package:front_end/src/fasta/uri_translator.dart';
|
|||
import 'package:front_end/src/incremental/file_state.dart';
|
||||
import 'package:front_end/src/incremental/kernel_driver.dart';
|
||||
import 'package:kernel/kernel.dart' hide Source;
|
||||
import 'package:kernel/target/targets.dart';
|
||||
import 'package:kernel/target/vm_fasta.dart';
|
||||
import 'package:meta/meta.dart';
|
||||
|
||||
/// Implementation of [IncrementalKernelGenerator].
|
||||
|
@ -59,11 +57,7 @@ class IncrementalKernelGeneratorImpl implements IncrementalKernelGenerator {
|
|||
}
|
||||
|
||||
_driver = new KernelDriver(
|
||||
_logger,
|
||||
options.fileSystem,
|
||||
options.byteStore,
|
||||
uriTranslator,
|
||||
new VmFastaTarget(new TargetFlags(strongMode: options.strongMode)),
|
||||
_logger, options.fileSystem, options.byteStore, uriTranslator, options,
|
||||
fileAddedFn: onFileAdded);
|
||||
}
|
||||
|
||||
|
|
|
@ -4,8 +4,10 @@
|
|||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:front_end/compiler_options.dart';
|
||||
import 'package:front_end/memory_file_system.dart';
|
||||
import 'package:front_end/src/base/performace_logger.dart';
|
||||
import 'package:front_end/src/base/processed_options.dart';
|
||||
import 'package:front_end/src/fasta/kernel/utils.dart';
|
||||
import 'package:front_end/src/fasta/uri_translator_impl.dart';
|
||||
import 'package:front_end/src/incremental/byte_store.dart';
|
||||
|
@ -656,7 +658,9 @@ import 'b.dart';
|
|||
fileSystem,
|
||||
new MemoryByteStore(),
|
||||
uriTranslator,
|
||||
new NoneTarget(new TargetFlags(strongMode: true)),
|
||||
new ProcessedOptions(new CompilerOptions()
|
||||
..strongMode = true
|
||||
..target = new NoneTarget(new TargetFlags(strongMode: true))),
|
||||
fileAddedFn: fileAddedFn);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue