diff --git a/pkg/dev_compiler/lib/src/kernel/command.dart b/pkg/dev_compiler/lib/src/kernel/command.dart index 11958a01319..3c7e212c567 100644 --- a/pkg/dev_compiler/lib/src/kernel/command.dart +++ b/pkg/dev_compiler/lib/src/kernel/command.dart @@ -125,8 +125,30 @@ Future _compile(List 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 _compile(List args, oldCompilerState, sourcePathToUri(sdkSummaryPath), sourcePathToUri(packageFile), + sourcePathToUri(librarySpecPath), summaryModules.keys.toList(), DevCompilerTarget(), fileSystem: fileSystem); @@ -332,6 +355,8 @@ Map parseAndRemoveDeclaredVariables(List 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'); diff --git a/pkg/dev_compiler/test/nullable_inference_test.dart b/pkg/dev_compiler/test/nullable_inference_test.dart index 3a1c819782b..517e659951a 100644 --- a/pkg/dev_compiler/test/nullable_inference_test.dart +++ b/pkg/dev_compiler/test/nullable_inference_test.dart @@ -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); diff --git a/pkg/dev_compiler/tool/input_sdk/lib/libraries.json b/pkg/dev_compiler/tool/input_sdk/lib/libraries.json deleted file mode 100644 index 49b904fca44..00000000000 --- a/pkg/dev_compiler/tool/input_sdk/lib/libraries.json +++ /dev/null @@ -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" - } - } - } -} diff --git a/pkg/dev_compiler/tool/kernel_sdk.dart b/pkg/dev_compiler/tool/kernel_sdk.dart index feacbc79a6b..2827fbef733 100755 --- a/pkg/dev_compiler/tool/kernel_sdk.dart +++ b/pkg/dev_compiler/tool/kernel_sdk.dart @@ -36,13 +36,14 @@ Future main(List 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 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, diff --git a/pkg/front_end/lib/src/api_unstable/ddc.dart b/pkg/front_end/lib/src/api_unstable/ddc.dart index dcc4c43970f..1a85b55acae 100644 --- a/pkg/front_end/lib/src/api_unstable/ddc.dart +++ b/pkg/front_end/lib/src/api_unstable/ddc.dart @@ -56,6 +56,7 @@ Future initializeCompiler( InitializedCompilerState oldState, Uri sdkSummary, Uri packagesFile, + Uri librariesSpecificationUri, List inputSummaries, Target target, {FileSystem fileSystem}) async { @@ -71,6 +72,7 @@ Future 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 initializeCompiler( ..sdkSummary = sdkSummary ..packagesFileUri = packagesFile ..inputSummaries = inputSummaries + ..librariesSpecificationUri = librariesSpecificationUri ..target = target ..fileSystem = fileSystem ?? StandardFileSystem.instance; diff --git a/sdk/lib/libraries.json b/sdk/lib/libraries.json index a1783983c07..3265de2888f 100644 --- a/sdk/lib/libraries.json +++ b/sdk/lib/libraries.json @@ -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" diff --git a/tests/language_2/language_2_dartdevc.status b/tests/language_2/language_2_dartdevc.status index 9e924cf03f0..665f6310119 100644 --- a/tests/language_2/language_2_dartdevc.status +++ b/tests/language_2/language_2_dartdevc.status @@ -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 diff --git a/utils/dartdevc/BUILD.gn b/utils/dartdevc/BUILD.gn index 04dd2fcc215..13ccd28a4a2 100644 --- a/utils/dartdevc/BUILD.gn +++ b/utils/dartdevc/BUILD.gn @@ -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",