[dartdevc] fix conditional imports in kernel backend

Change-Id: I694b67624dff65099ca8cb8147d2b56a3532cd6c
Reviewed-on: https://dart-review.googlesource.com/c/85880
Reviewed-by: Jake Macdonald <jakemac@google.com>
Commit-Queue: Jenny Messerly <jmesserly@google.com>
This commit is contained in:
Jenny Messerly 2018-12-04 18:39:46 +00:00 committed by commit-bot@chromium.org
parent e143a52531
commit d3c3341b8a
8 changed files with 42 additions and 119 deletions

View file

@ -125,8 +125,30 @@ Future<CompilerResult> _compile(List<String> args,
var summaryModules = Map.fromIterables(
summaryPaths.map(sourcePathToUri), options.summaryModules.values);
var useAnalyzer = summaryPaths.any((s) => !s.endsWith('.dill'));
var sdkSummaryPath = argResults['dart-sdk-summary'] as String ??
(useAnalyzer ? defaultAnalyzerSdkSummaryPath : defaultSdkSummaryPath);
var sdkSummaryPath = argResults['dart-sdk-summary'] as String;
String librarySpecPath;
if (sdkSummaryPath == null) {
sdkSummaryPath =
useAnalyzer ? defaultAnalyzerSdkSummaryPath : defaultSdkSummaryPath;
librarySpecPath = defaultLibrarySpecPath;
} else {
// TODO(jmesserly): the `isSupported` bit should be included in the SDK
// summary, but front_end requires a separate file, so we have to work
// around that, while avoiding yet another command line option.
//
// Right now we search two locations: one level above the SDK summary
// (this works for the build and SDK layouts) or next to the SDK summary
// (if the user is doing something custom).
//
// Another option: we could make an in-memory file with the relevant info.
librarySpecPath =
path.join(path.dirname(path.dirname(sdkSummaryPath)), "libraries.json");
if (!File(librarySpecPath).existsSync()) {
librarySpecPath =
path.join(path.dirname(sdkSummaryPath), "libraries.json");
}
}
useAnalyzer = useAnalyzer || !sdkSummaryPath.endsWith('.dill');
/// The .packages file path provided by the user.
@ -158,6 +180,7 @@ Future<CompilerResult> _compile(List<String> args,
oldCompilerState,
sourcePathToUri(sdkSummaryPath),
sourcePathToUri(packageFile),
sourcePathToUri(librarySpecPath),
summaryModules.keys.toList(),
DevCompilerTarget(),
fileSystem: fileSystem);
@ -332,6 +355,8 @@ Map<String, String> parseAndRemoveDeclaredVariables(List<String> args) {
final defaultSdkSummaryPath =
path.join(getSdkPath(), 'lib', '_internal', 'ddc_sdk.dill');
final defaultLibrarySpecPath = path.join(getSdkPath(), 'lib', 'libraries.json');
final defaultAnalyzerSdkSummaryPath =
path.join(getSdkPath(), 'lib', '_internal', 'ddc_sdk.sum');

View file

@ -573,7 +573,7 @@ const nullCheck = const _NullCheck();
var mainUri = Uri.file('/memory/test.dart');
_fileSystem.entityForUri(mainUri).writeAsStringSync(code);
_compilerState = await fe.initializeCompiler(
_compilerState, sdkUri, packagesUri, [], DevCompilerTarget(),
_compilerState, sdkUri, packagesUri, null, [], DevCompilerTarget(),
fileSystem: _fileSystem);
fe.DdcResult result =
await fe.compile(_compilerState, [mainUri], diagnosticMessageHandler);

View file

@ -1,110 +0,0 @@
{
"dartdevc": {
"libraries": {
"_runtime": {
"uri": "../private/ddc_runtime/runtime.dart"
},
"_debugger": {
"uri": "../private/debugger.dart"
},
"_foreign_helper": {
"uri": "../private/foreign_helper.dart"
},
"_http": {
"uri": "../../../../../sdk/lib/_http/http.dart"
},
"_interceptors": {
"uri": "../private/interceptors.dart"
},
"_internal": {
"uri": "../../../../../sdk/lib/internal/internal.dart",
"patches": "../patch/internal_patch.dart"
},
"_isolate_helper": {
"uri": "../private/isolate_helper.dart"
},
"_js_helper": {
"uri": "../private/js_helper.dart"
},
"_js_mirrors": {
"uri": "../private/js_mirrors.dart"
},
"_js_primitives": {
"uri": "../private/js_primitives.dart"
},
"_metadata": {
"uri": "../../../../../sdk/lib/html/html_common/metadata.dart"
},
"_native_typed_data": {
"uri": "../private/native_typed_data.dart"
},
"async": {
"uri": "../../../../../sdk/lib/async/async.dart",
"patches": "../patch/async_patch.dart"
},
"collection": {
"uri": "../../../../../sdk/lib/collection/collection.dart",
"patches": "../patch/collection_patch.dart"
},
"convert": {
"uri": "../../../../../sdk/lib/convert/convert.dart",
"patches": "../patch/convert_patch.dart"
},
"core": {
"uri": "../../../../../sdk/lib/core/core.dart",
"patches": "../patch/core_patch.dart"
},
"developer": {
"uri": "../../../../../sdk/lib/developer/developer.dart",
"patches": "../patch/developer_patch.dart"
},
"io": {
"uri": "../../../../../sdk/lib/io/io.dart",
"patches": "../patch/io_patch.dart"
},
"isolate": {
"uri": "../../../../../sdk/lib/isolate/isolate.dart",
"patches": "../patch/isolate_patch.dart"
},
"mirrors": {
"uri": "../../../../../sdk/lib/mirrors/mirrors.dart",
"patches": "../patch/mirrors_patch.dart"
},
"math": {
"uri": "../../../../../sdk/lib/math/math.dart",
"patches": "../patch/math_patch.dart"
},
"typed_data": {
"uri": "../../../../../sdk/lib/typed_data/typed_data.dart",
"patches": "../patch/typed_data_patch.dart"
},
"html": {
"uri": "../../../../../sdk/lib/html/dart2js/html_dart2js.dart"
},
"html_common": {
"uri": "../../../../../sdk/lib/html/html_common/html_common_dart2js.dart"
},
"indexed_db": {
"uri": "../../../../../sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart"
},
"js": {
"uri": "js/dart2js/js_dart2js.dart"
},
"js_util": {
"uri": "js_util/dart2js/js_util_dart2js.dart"
},
"svg": {
"uri": "../../../../../sdk/lib/svg/dart2js/svg_dart2js.dart"
},
"web_audio": {
"uri": "../../../../../sdk/lib/web_audio/dart2js/web_audio_dart2js.dart"
},
"web_gl": {
"uri": "../../../../../sdk/lib/web_gl/dart2js/web_gl_dart2js.dart"
},
"web_sql": {
"uri": "../../../../../sdk/lib/web_sql/dart2js/web_sql_dart2js.dart"
}
}
}
}

View file

@ -36,13 +36,14 @@ Future main(List<String> args) async {
outputPath = path.join(genDir, 'kernel', 'ddc_sdk.dill');
}
var librarySpecPath = parserOptions['libraries'] as String;
var target = DevCompilerTarget();
var options = CompilerOptions()
..compileSdk = true
// TODO(sigmund): remove this unnecessary option when possible.
..sdkRoot = Uri.base
..librariesSpecificationUri =
Uri.base.resolveUri(Uri.file(parserOptions['libraries']))
..librariesSpecificationUri = Uri.base.resolveUri(Uri.file(librarySpecPath))
..target = target;
var inputs = target.extraRequiredLibraries.map(Uri.parse).toList();
@ -51,6 +52,8 @@ Future main(List<String> args) async {
var outputDir = path.dirname(outputPath);
await Directory(outputDir).create(recursive: true);
await writeComponentToBinary(component, outputPath);
File(librarySpecPath).copySync(
path.join(path.dirname(outputDir), path.basename(librarySpecPath)));
var jsModule = ProgramCompiler(
component,

View file

@ -56,6 +56,7 @@ Future<InitializedCompilerState> initializeCompiler(
InitializedCompilerState oldState,
Uri sdkSummary,
Uri packagesFile,
Uri librariesSpecificationUri,
List<Uri> inputSummaries,
Target target,
{FileSystem fileSystem}) async {
@ -71,6 +72,7 @@ Future<InitializedCompilerState> initializeCompiler(
if (oldState != null &&
oldState.options.sdkSummary == sdkSummary &&
oldState.options.packagesFileUri == packagesFile &&
oldState.options.librariesSpecificationUri == librariesSpecificationUri &&
listEqual(oldState.options.inputSummaries, inputSummaries)) {
// Reuse old state.
@ -91,6 +93,7 @@ Future<InitializedCompilerState> initializeCompiler(
..sdkSummary = sdkSummary
..packagesFileUri = packagesFile
..inputSummaries = inputSummaries
..librariesSpecificationUri = librariesSpecificationUri
..target = target
..fileSystem = fileSystem ?? StandardFileSystem.instance;

View file

@ -342,7 +342,8 @@
},
"isolate": {
"patches": "../../pkg/dev_compiler/tool/input_sdk/patch/isolate_patch.dart",
"uri": "isolate/isolate.dart"
"uri": "isolate/isolate.dart",
"supported": false
},
"web_gl": {
"uri": "web_gl/dart2js/web_gl_dart2js.dart"

View file

@ -183,8 +183,6 @@ compile_time_constant_static5_test/11: CompileTimeError # Issue 31537
compile_time_constant_static5_test/16: CompileTimeError # Issue 31537
compile_time_constant_static5_test/21: CompileTimeError # Issue 31537
compile_time_constant_static5_test/23: CompileTimeError # Issue 31537
conditional_import_string_test: CompileTimeError # Test is broken
conditional_import_test: CompileTimeError # Test is broken
config_import_test: RuntimeError
const_cast1_test/02: MissingCompileTimeError
const_constructor3_test/04: MissingCompileTimeError

View file

@ -9,6 +9,7 @@ import("../create_timestamp.gni")
patched_sdk_dir = "$target_gen_dir/patched_sdk"
sdk_summary = "$target_gen_dir/ddc_sdk.sum"
sdk_dill = "$target_gen_dir/kernel/ddc_sdk.dill"
sdk_libraries_json = "$target_gen_dir/libraries.json"
application_snapshot("dartdevc") {
main_dart = "../../pkg/dev_compiler/bin/dartdevc.dart"
@ -48,7 +49,7 @@ application_snapshot("dartdevk") {
":dartdevk_sdk",
]
inputs = [ sdk_dill ]
inputs = [ sdk_dill, sdk_libraries_json ]
}
sdk_lib_files = exec_script("../../tools/list_dart_files.py",
@ -269,6 +270,7 @@ prebuilt_dart_action("dartdevc_test_pkg") {
inputs = [
sdk_dill,
sdk_libraries_json,
sdk_summary,
"$target_gen_dir/dartdevc_files.stamp",
"$root_gen_dir/pkg_files.stamp",
@ -348,6 +350,7 @@ prebuilt_dart_action("dartdevk_sdk") {
outputs = [
sdk_dill,
sdk_libraries_json,
"$target_gen_dir/kernel/amd/dart_sdk.js",
"$target_gen_dir/kernel/amd/dart_sdk.js.map",
"$target_gen_dir/kernel/common/dart_sdk.js",