mirror of
https://github.com/dart-lang/sdk
synced 2024-10-06 13:08:01 +00:00
dart2js nnbd setup
- fixes check_nnbd_sdk.dart to run on dart2js patch files - splits golden file used by that script by target - adds it to the old-rti bot (until we get the new nnbd bot) - adds a suite that runs legacy tests in nnbd weak mode Change-Id: I0a89534dcd1cf7338849d59ab3e5d989d2ecf3d0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131885 Reviewed-by: Vijay Menon <vsm@google.com>
This commit is contained in:
parent
b74620ba85
commit
f910a7575f
|
@ -366,6 +366,19 @@ class CompilerOptions implements DiagnosticOptions {
|
|||
_extractExperiments(options, onError: onError, onWarning: onWarning);
|
||||
if (equalMaps(languageExperiments, fe.defaultExperimentalFlags)) {
|
||||
platformBinaries ??= fe.computePlatformBinariesLocation();
|
||||
} else {
|
||||
// TODO(sigmund): change these defaults before we unfork the sdk.
|
||||
// To unfork the plan is to accept the same platform files regardless of
|
||||
// the experiment flag (it will be enabled in the sdk regardless).
|
||||
if (_hasOption(options, Flags.testMode) &&
|
||||
languageExperiments[fe.ExperimentalFlag.nonNullable]) {
|
||||
var experimentWithoutNullability = Map.of(languageExperiments);
|
||||
experimentWithoutNullability[fe.ExperimentalFlag.nonNullable] = false;
|
||||
if (equalMaps(
|
||||
experimentWithoutNullability, fe.defaultExperimentalFlags)) {
|
||||
platformBinaries ??= fe.computePlatformBinariesLocation();
|
||||
}
|
||||
}
|
||||
}
|
||||
return new CompilerOptions()
|
||||
..librariesSpecificationUri = librariesSpecificationUri
|
||||
|
|
|
@ -22,7 +22,7 @@ void main(List<String> argv) {
|
|||
'${_parser.usage}');
|
||||
return;
|
||||
}
|
||||
String baseDir = args['out'] as String;
|
||||
var baseDir = args['out'] as String;
|
||||
if (baseDir == null) {
|
||||
var tmp = Directory.systemTemp.createTempSync('check_sdk-');
|
||||
baseDir = tmp.path;
|
||||
|
@ -34,11 +34,12 @@ void main(List<String> argv) {
|
|||
Uri librariesJson = args['libraries'] != null
|
||||
? resolveInputUri(args['libraries'] as String)
|
||||
: Platform.script.resolve('../../../sdk_nnbd/lib/libraries.json');
|
||||
var target = args['target'] as String;
|
||||
patch.main([
|
||||
'--libraries',
|
||||
librariesJson.toFilePath(),
|
||||
'--target',
|
||||
args['target'] as String,
|
||||
target,
|
||||
'--out',
|
||||
sdkDir,
|
||||
'--merge-parts',
|
||||
|
@ -88,7 +89,8 @@ main() {}
|
|||
File.fromUri(errorFile).writeAsStringSync(errors, flush: true);
|
||||
|
||||
// Check against golden file.
|
||||
var goldenFile = Platform.script.resolve('nnbd_sdk_error_golden.txt');
|
||||
var goldenFile =
|
||||
Platform.script.resolve('${target}_nnbd_sdk_error_golden.txt');
|
||||
var golden = File.fromUri(goldenFile).readAsStringSync();
|
||||
if (errors != golden) {
|
||||
if (args['update-golden'] as bool) {
|
||||
|
@ -101,11 +103,9 @@ main() {}
|
|||
print('Golden file does not match.');
|
||||
var diff = Process.runSync('diff', [goldenFile.path, errorFile.path]);
|
||||
print(diff.stdout);
|
||||
print('''
|
||||
|
||||
To update the golden file, run:
|
||||
> <path-to-newly-built-dart-sdk>/bin/dart pkg/dev_compiler/tool/check_nnbd_sdk.dart --update-golden
|
||||
''');
|
||||
print('\nTo update the golden file, run:'
|
||||
'\n ${Platform.executable} ${Platform.script} '
|
||||
'${argv.join(' ')} --update-golden');
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
ERROR|COMPILE_TIME_ERROR|INCONSISTENT_INHERITANCE|lib/_internal/js_runtime/lib/interceptors.dart|1655|7|5|Superinterfaces don't have a valid override for '&': int.& (&), JSNumber.& (&).
|
||||
ERROR|COMPILE_TIME_ERROR|INCONSISTENT_INHERITANCE|lib/_internal/js_runtime/lib/interceptors.dart|1655|7|5|Superinterfaces don't have a valid override for '<<': int.<< (<<), JSNumber.<< (<<).
|
||||
ERROR|COMPILE_TIME_ERROR|INCONSISTENT_INHERITANCE|lib/_internal/js_runtime/lib/interceptors.dart|1655|7|5|Superinterfaces don't have a valid override for '>>': int.>> (>>), JSNumber.>> (>>).
|
||||
ERROR|COMPILE_TIME_ERROR|INCONSISTENT_INHERITANCE|lib/_internal/js_runtime/lib/interceptors.dart|1655|7|5|Superinterfaces don't have a valid override for '\|': int.\| (\|), JSNumber.\| (\|).
|
||||
ERROR|COMPILE_TIME_ERROR|INCONSISTENT_INHERITANCE|lib/_internal/js_runtime/lib/interceptors.dart|1655|7|5|Superinterfaces don't have a valid override for '^': int.^ (^), JSNumber.^ (^).
|
||||
ERROR|COMPILE_TIME_ERROR|INVALID_OVERRIDE|lib/_internal/js_runtime/lib/interceptors.dart|1153|7|14|'JSMutableIndexable.[]=' ('void Function(int, dynamic)') isn't a valid override of 'JSArray.[]=' ('void Function(int, E)').
|
||||
ERROR|COMPILE_TIME_ERROR|INVALID_OVERRIDE|lib/_internal/js_runtime/lib/interceptors.dart|1155|7|12|'JSMutableIndexable.[]=' ('void Function(int, dynamic)') isn't a valid override of 'JSArray.[]=' ('void Function(int, E)').
|
||||
ERROR|COMPILE_TIME_ERROR|INVALID_OVERRIDE|lib/_internal/js_runtime/lib/interceptors.dart|1157|7|17|'JSMutableIndexable.[]=' ('void Function(int, dynamic)') isn't a valid override of 'JSArray.[]=' ('void Function(int, E)').
|
||||
ERROR|COMPILE_TIME_ERROR|INVALID_OVERRIDE|lib/_internal/js_runtime/lib/native_typed_data.dart|708|17|3|'NativeTypedArrayOfDouble.[]=' ('void Function(int, double)') isn't a valid override of 'JSMutableIndexable.[]=' ('void Function(int, dynamic)').
|
||||
ERROR|COMPILE_TIME_ERROR|INVALID_OVERRIDE|lib/_internal/js_runtime/lib/native_typed_data.dart|729|17|3|'NativeTypedArrayOfInt.[]=' ('void Function(int, int)') isn't a valid override of 'JSMutableIndexable.[]=' ('void Function(int, dynamic)').
|
||||
ERROR|COMPILE_TIME_ERROR|INVALID_OVERRIDE|lib/js/js.dart|351|17|3|'JsArray.[]=' ('void Function(dynamic, E)') isn't a valid override of 'JsObject.[]=' ('void Function(dynamic, dynamic)').
|
||||
ERROR|STATIC_TYPE_WARNING|UNDEFINED_OPERATOR|lib/_internal/js_runtime/lib/interceptors.dart|1672|28|1|The operator '&' isn't defined for the class 'JSInt'.
|
||||
ERROR|STATIC_TYPE_WARNING|UNDEFINED_OPERATOR|lib/_internal/js_runtime/lib/interceptors.dart|1674|27|1|The operator '&' isn't defined for the class 'JSInt'.
|
||||
ERROR|STATIC_TYPE_WARNING|UNDEFINED_OPERATOR|lib/_internal/js_runtime/lib/interceptors.dart|1677|17|1|The operator '&' isn't defined for the class 'JSInt'.
|
||||
ERROR|STATIC_TYPE_WARNING|UNDEFINED_OPERATOR|lib/_internal/js_runtime/lib/interceptors.dart|1682|18|1|The operator '&' isn't defined for the class 'JSInt'.
|
||||
ERROR|STATIC_TYPE_WARNING|UNDEFINED_OPERATOR|lib/_internal/js_runtime/lib/interceptors.dart|1682|44|1|The operator '&' isn't defined for the class 'JSInt'.
|
||||
ERROR|STATIC_WARNING|FINAL_NOT_INITIALIZED|lib/_internal/js_runtime/lib/native_typed_data.dart|31|13|13|The final variable 'lengthInBytes' must be initialized.
|
||||
ERROR|STATIC_WARNING|FINAL_NOT_INITIALIZED|lib/_internal/js_runtime/lib/native_typed_data.dart|320|20|6|The final variable 'buffer' must be initialized.
|
||||
ERROR|STATIC_WARNING|FINAL_NOT_INITIALIZED|lib/_internal/js_runtime/lib/native_typed_data.dart|324|13|13|The final variable 'lengthInBytes' must be initialized.
|
||||
ERROR|STATIC_WARNING|FINAL_NOT_INITIALIZED|lib/_internal/js_runtime/lib/native_typed_data.dart|328|13|13|The final variable 'offsetInBytes' must be initialized.
|
||||
ERROR|STATIC_WARNING|FINAL_NOT_INITIALIZED|lib/_internal/js_runtime/lib/native_typed_data.dart|333|13|18|The final variable 'elementSizeInBytes' must be initialized.
|
|
@ -261,8 +261,16 @@ class PatchApplier extends GeneralizingAstVisitor {
|
|||
var name = _qualifiedName(node);
|
||||
var patchNode = patch.patches[name];
|
||||
if (patchNode == null) {
|
||||
print('warning: patch not found for $name: $node');
|
||||
patchWasMissing = true;
|
||||
// *.fromEnvironment are left unpatched by dart2js and are handled via
|
||||
// codegen.
|
||||
if (name != 'bool.fromEnvironment' &&
|
||||
name != 'int.fromEnvironment' &&
|
||||
name != 'String.fromEnvironment') {
|
||||
print('warning: patch not found for $name: $node');
|
||||
// TODO(sigmund): delete this fail logic? Rather than emit an empty
|
||||
// file, it's more useful to emit a file with missing patches.
|
||||
// patchWasMissing = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -52,4 +52,4 @@ DART_ROOT="$(cd "${SDK_DIR}/.." ; pwd -P)"
|
|||
|
||||
DART2JS="package:compiler/src/dart2js.dart"
|
||||
|
||||
exec "$DART" "--packages=$DART_ROOT/.packages" "${EXTRA_VM_OPTIONS[@]}" "$DART2JS" "${EXTRA_OPTIONS[@]}" "$@"
|
||||
exec "$DART" "--packages=$DART_ROOT/.packages" --enable-experiment=non-nullable "${EXTRA_VM_OPTIONS[@]}" "$DART2JS" "${EXTRA_OPTIONS[@]}" "$@"
|
||||
|
|
|
@ -55,4 +55,4 @@ if [[ $DART_VM_OPTIONS ]]; then
|
|||
EXTRA_VM_OPTIONS+=("${OPTIONS[@]}")
|
||||
fi
|
||||
|
||||
exec "$DART" "${EXTRA_VM_OPTIONS[@]}" "$SNAPSHOT" "${EXTRA_OPTIONS[@]}" "$@"
|
||||
exec "$DART" --enable-experiment=non-nullable "${EXTRA_VM_OPTIONS[@]}" "$SNAPSHOT" "${EXTRA_OPTIONS[@]}" "$@"
|
||||
|
|
|
@ -140,6 +140,43 @@
|
|||
"xcodebuild/ReleaseX64/dart2js_platform.dill",
|
||||
"xcodebuild/ReleaseX64/dart2js_platform_strong.dill"
|
||||
],
|
||||
"dart2js_hostasserts_nnbd": [
|
||||
".packages",
|
||||
"out/ReleaseX64NNBD/dart",
|
||||
"out/ReleaseX64NNBD/dart2js_platform.dill",
|
||||
"out/ReleaseX64NNBD/dart2js_platform_strong.dill",
|
||||
"pkg/",
|
||||
"runtime/tests/",
|
||||
"samples-dev/",
|
||||
"samples/",
|
||||
"sdk/",
|
||||
"sdk_nnbd/",
|
||||
"tests/angular/",
|
||||
"tests/co19_2/co19_2-analyzer.status",
|
||||
"tests/co19_2/co19_2-co19.status",
|
||||
"tests/co19_2/co19_2-dart2js.status",
|
||||
"tests/co19_2/co19_2-dartdevc.status",
|
||||
"tests/co19_2/co19_2-kernel.status",
|
||||
"tests/co19_2/co19_2-runtime.status",
|
||||
"tests/compiler/",
|
||||
"tests/corelib_2/",
|
||||
"tests/dart/",
|
||||
"tests/kernel/",
|
||||
"tests/language_2/",
|
||||
"tests/lib_2/",
|
||||
"tests/light_unittest.dart",
|
||||
"tests/search/",
|
||||
"tests/standalone_2/",
|
||||
"tests/ffi/",
|
||||
"third_party/d8/",
|
||||
"third_party/pkg/",
|
||||
"third_party/pkg_tested/",
|
||||
"third_party/requirejs/",
|
||||
"tools/",
|
||||
"xcodebuild/ReleaseX64NNBD/dart",
|
||||
"xcodebuild/ReleaseX64NNBD/dart2js_platform.dill",
|
||||
"xcodebuild/ReleaseX64NNBD/dart2js_platform_strong.dill"
|
||||
],
|
||||
"front-end": [
|
||||
".packages",
|
||||
"out/ReleaseIA32/",
|
||||
|
@ -370,6 +407,13 @@
|
|||
"options": {
|
||||
"use-sdk": true
|
||||
}},
|
||||
"dart2js-weak-(linux|mac|win)-x64-d8": {
|
||||
"options": {
|
||||
"builder-tag": "dart2js-weak",
|
||||
"enable-experiment": ["non-nullable"],
|
||||
"dart2js-options": ["--no-runtime-null-safety"],
|
||||
"use-sdk": true
|
||||
}},
|
||||
"dart2js-(linux|win)-firefox": {
|
||||
"options": {
|
||||
"use-sdk": true
|
||||
|
@ -408,6 +452,13 @@
|
|||
"options": {
|
||||
"host-checked": true
|
||||
}},
|
||||
"dart2js-hostasserts-weak-(linux|mac|win)-x64-d8": {
|
||||
"options": {
|
||||
"builder-tag": "dart2js-weak",
|
||||
"enable-experiment": ["non-nullable"],
|
||||
"dart2js-options": ["--no-runtime-null-safety"],
|
||||
"host-checked": true
|
||||
}},
|
||||
"dart2js-old-rti-(linux|mac|win)-x64-d8": {
|
||||
"options": {
|
||||
"builder-tag": "old_rti",
|
||||
|
@ -578,7 +629,6 @@
|
|||
"use-sdk": true,
|
||||
"enable-experiment": ["non-nullable"],
|
||||
"enable-asserts": true
|
||||
|
||||
}},
|
||||
"cfe-(linux|mac|win)": {
|
||||
"options": {
|
||||
|
@ -1998,8 +2048,32 @@
|
|||
"script": "tools/build.py",
|
||||
"arguments": [
|
||||
"--nnbd",
|
||||
"create_sdk"
|
||||
"create_sdk",
|
||||
"dart2js_bot"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "check dart nnbd sdk for static errors",
|
||||
"script": "out/ReleaseX64NNBD/dart-sdk/bin/dart",
|
||||
"arguments": [
|
||||
"--enable-experiment=non-nullable",
|
||||
"pkg/dev_compiler/tool/check_nnbd_sdk.dart",
|
||||
"--target",
|
||||
"dart2js_server"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "dart2js nnbd weak tests",
|
||||
"arguments": [
|
||||
"-ndart2js-hostasserts-weak-linux-x64-d8",
|
||||
"--dart2js-batch",
|
||||
"language_2",
|
||||
"corelib_2",
|
||||
"dart2js_extra",
|
||||
"dart2js_native"
|
||||
],
|
||||
"shards": 6,
|
||||
"fileset": "dart2js_hostasserts_nnbd"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
@ -34,7 +34,6 @@ prebuilt_dart_action("dart2js_create_snapshot_entry") {
|
|||
script = "create_snapshot_entry.dart"
|
||||
|
||||
inputs = [
|
||||
"../../sdk/lib/_internal/sdk_library_metadata/lib/libraries.dart",
|
||||
"$target_gen_dir/dart2js_files.stamp",
|
||||
"../../tools/make_version.py",
|
||||
"../../tools/VERSION",
|
||||
|
@ -69,8 +68,13 @@ application_snapshot("dart2js") {
|
|||
training_args = [
|
||||
"--packages=" + rebase_path("../../.packages"),
|
||||
"--libraries-spec=" + rebase_path("../../$libraries_specification_path"),
|
||||
rebase_path("$target_gen_dir/dart2js.dart"),
|
||||
]
|
||||
|
||||
if (use_nnbd) {
|
||||
training_args += [ "--enable-experiment=non-nullable" ]
|
||||
}
|
||||
|
||||
training_args += [ rebase_path("$target_gen_dir/dart2js.dart") ]
|
||||
}
|
||||
|
||||
compile_platform("compile_dart2js_platform") {
|
||||
|
@ -88,6 +92,10 @@ compile_platform("compile_dart2js_platform") {
|
|||
"--target=dart2js",
|
||||
"dart:core",
|
||||
]
|
||||
|
||||
if (use_nnbd) {
|
||||
args += [ "--enable-experiment=non-nullable" ]
|
||||
}
|
||||
}
|
||||
compile_platform("compile_dart2js_server_platform") {
|
||||
single_root_scheme = "org-dartlang-sdk"
|
||||
|
@ -104,4 +112,8 @@ compile_platform("compile_dart2js_server_platform") {
|
|||
"--target=dart2js_server",
|
||||
"dart:core",
|
||||
]
|
||||
|
||||
if (use_nnbd) {
|
||||
args += [ "--enable-experiment=non-nullable" ]
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue