mirror of
https://github.com/dart-lang/sdk
synced 2024-09-04 16:03:44 +00:00
[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:
parent
e143a52531
commit
d3c3341b8a
|
@ -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');
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in a new issue