Version 2.2.0-dev.1.1
Merge commit '63fd8f63e66d56f4865445a8bfd836a68fabac0d' into dev
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ee303e8..37ef962 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,4 @@
-## 2.2.0-dev.1.0
+## 2.2.0-dev.1.1
### Tool Changes
diff --git a/pkg/dev_compiler/lib/src/kernel/command.dart b/pkg/dev_compiler/lib/src/kernel/command.dart
index 11958a0..3c7e212 100644
--- a/pkg/dev_compiler/lib/src/kernel/command.dart
+++ b/pkg/dev_compiler/lib/src/kernel/command.dart
@@ -125,8 +125,30 @@
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 @@
oldCompilerState,
sourcePathToUri(sdkSummaryPath),
sourcePathToUri(packageFile),
+ sourcePathToUri(librarySpecPath),
summaryModules.keys.toList(),
DevCompilerTarget(),
fileSystem: fileSystem);
@@ -332,6 +355,8 @@
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 3a1c819..517e6599 100644
--- a/pkg/dev_compiler/test/nullable_inference_test.dart
+++ b/pkg/dev_compiler/test/nullable_inference_test.dart
@@ -573,7 +573,7 @@
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 49b904f..0000000
--- 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 feacbc7..2827fbe 100755
--- a/pkg/dev_compiler/tool/kernel_sdk.dart
+++ b/pkg/dev_compiler/tool/kernel_sdk.dart
@@ -36,13 +36,14 @@
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 @@
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 dcc4c43..1a85b55 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 @@
InitializedCompilerState oldState,
Uri sdkSummary,
Uri packagesFile,
+ Uri librariesSpecificationUri,
List<Uri> inputSummaries,
Target target,
{FileSystem fileSystem}) async {
@@ -71,6 +72,7 @@
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 @@
..sdkSummary = sdkSummary
..packagesFileUri = packagesFile
..inputSummaries = inputSummaries
+ ..librariesSpecificationUri = librariesSpecificationUri
..target = target
..fileSystem = fileSystem ?? StandardFileSystem.instance;
diff --git a/runtime/bin/builtin.dart b/runtime/bin/builtin.dart
index 1c33aeb..2d663e0 100644
--- a/runtime/bin/builtin.dart
+++ b/runtime/bin/builtin.dart
@@ -246,30 +246,6 @@
return scriptUri.toString();
}
-// Embedder Entrypoint (gen_snapshot):
-// Resolve relative paths relative to working directory.
-@pragma("vm:entry-point")
-String _resolveInWorkingDirectory(String fileName) {
- if (!_setupCompleted) {
- _setupHooks();
- }
- if (_workingDirectory == null) {
- throw 'No current working directory set.';
- }
- var name = _sanitizeWindowsPath(fileName);
-
- var uri = Uri.parse(name);
- if (uri.scheme != '') {
- throw 'Schemes are not supported when resolving filenames.';
- }
- uri = _workingDirectory.resolveUri(uri);
-
- if (_traceLoading) {
- _log('Resolved in working directory: $fileName -> $uri');
- }
- return uri.toString();
-}
-
// Only used by vm/cc unit tests.
Uri _resolvePackageUri(Uri uri) {
assert(_packageRoot != null);
@@ -304,22 +280,6 @@
}
}
-// Embedder Entrypoint.
-@pragma("vm:entry-point")
-_libraryFilePath(String libraryUri) {
- if (!_setupCompleted) {
- _setupHooks();
- }
- int index = libraryUri.lastIndexOf('/');
- var path;
- if (index == -1) {
- path = './';
- } else {
- path = libraryUri.substring(0, index + 1);
- }
- return _filePathFromUri(path);
-}
-
// Register callbacks and hooks with the rest of the core libraries.
@pragma("vm:entry-point")
_setupHooks() {
diff --git a/runtime/bin/dartutils.cc b/runtime/bin/dartutils.cc
index cf75b68..9252508 100644
--- a/runtime/bin/dartutils.cc
+++ b/runtime/bin/dartutils.cc
@@ -35,7 +35,6 @@
namespace bin {
const char* DartUtils::original_working_directory = NULL;
-CommandLineOptions* DartUtils::url_mapping = NULL;
const char* const DartUtils::kDartScheme = "dart:";
const char* const DartUtils::kDartExtensionScheme = "dart-ext:";
const char* const DartUtils::kAsyncLibURL = "dart:async";
@@ -69,23 +68,6 @@
#endif // defined(HOST_OS_WINDOWS)
}
-const char* DartUtils::MapLibraryUrl(const char* url_string) {
- ASSERT(url_mapping != NULL);
- // We need to check if the passed in url is found in the url_mapping array,
- // in that case use the mapped entry.
- intptr_t len = strlen(url_string);
- for (intptr_t idx = 0; idx < url_mapping->count(); idx++) {
- const char* url_name = url_mapping->GetArgument(idx);
- if (!strncmp(url_string, url_name, len) && (url_name[len] == ',')) {
- const char* url_mapped_name = url_name + len + 1;
- if (strlen(url_mapped_name) != 0) {
- return url_mapped_name; // Found a mapping for this URL.
- }
- }
- }
- return NULL; // Did not find a mapping for this URL.
-}
-
int64_t DartUtils::GetIntegerValue(Dart_Handle value_obj) {
int64_t value = 0;
Dart_Handle result = Dart_IntegerToInt64(value_obj, &value);
@@ -394,23 +376,6 @@
directory);
}
-Dart_Handle DartUtils::ResolveUriInWorkingDirectory(Dart_Handle script_uri) {
- const int kNumArgs = 1;
- Dart_Handle dart_args[kNumArgs];
- dart_args[0] = script_uri;
- return Dart_Invoke(DartUtils::LookupBuiltinLib(),
- NewString("_resolveInWorkingDirectory"), kNumArgs,
- dart_args);
-}
-
-Dart_Handle DartUtils::LibraryFilePath(Dart_Handle library_uri) {
- const int kNumArgs = 1;
- Dart_Handle dart_args[kNumArgs];
- dart_args[0] = library_uri;
- return Dart_Invoke(DartUtils::LookupBuiltinLib(),
- NewString("_libraryFilePath"), kNumArgs, dart_args);
-}
-
Dart_Handle DartUtils::ResolveScript(Dart_Handle url) {
const int kNumArgs = 1;
Dart_Handle dart_args[kNumArgs];
@@ -792,17 +757,6 @@
return original_working_directory != nullptr;
}
-Dart_Handle DartUtils::GetCanonicalizableWorkingDirectory() {
- const char* str = DartUtils::original_working_directory;
- intptr_t len = strlen(str);
- if ((str[len] == '/') || (IsWindowsHost() && str[len] == '\\')) {
- return Dart_NewStringFromCString(str);
- }
- char* new_str = reinterpret_cast<char*>(Dart_ScopeAllocate(len + 2));
- snprintf(new_str, (len + 2), "%s%s", str, File::PathSeparator());
- return Dart_NewStringFromCString(new_str);
-}
-
void DartUtils::SetEnvironment(dart::SimpleHashMap* environment) {
environment_ = environment;
}
diff --git a/runtime/bin/dartutils.h b/runtime/bin/dartutils.h
index 666d248..6dd1c5b 100644
--- a/runtime/bin/dartutils.h
+++ b/runtime/bin/dartutils.h
@@ -214,11 +214,7 @@
}
static bool SetOriginalWorkingDirectory();
- static Dart_Handle GetCanonicalizableWorkingDirectory();
- static const char* MapLibraryUrl(const char* url_string);
-
- static Dart_Handle ResolveUriInWorkingDirectory(Dart_Handle script_uri);
static Dart_Handle ResolveScript(Dart_Handle url);
enum MagicNumber {
@@ -239,9 +235,6 @@
// Global state that stores the original working directory..
static const char* original_working_directory;
- // Global state that captures the URL mappings specified on the command line.
- static CommandLineOptions* url_mapping;
-
static const char* const kDartScheme;
static const char* const kDartExtensionScheme;
static const char* const kAsyncLibURL;
@@ -258,8 +251,6 @@
static const char* const kHttpScheme;
static const char* const kVMServiceLibURL;
- static Dart_Handle LibraryFilePath(Dart_Handle library_uri);
-
static void SetEnvironment(dart::SimpleHashMap* environment);
static Dart_Handle EnvironmentCallback(Dart_Handle name);
@@ -585,61 +576,6 @@
DISALLOW_COPY_AND_ASSIGN(ScopedBlockingCall);
};
-// Where the argument to the constructor is the handle for an object
-// implementing List<int>, this class creates a scope in which the memory
-// backing the list can be accessed.
-//
-// Do not make Dart_ API calls while in a ScopedMemBuffer.
-// Do not call Dart_PropagateError while in a ScopedMemBuffer.
-class ScopedMemBuffer {
- public:
- explicit ScopedMemBuffer(Dart_Handle object) {
- if (!Dart_IsTypedData(object) && !Dart_IsList(object)) {
- Dart_ThrowException(
- DartUtils::NewDartArgumentError("Argument is not a List<int>"));
- }
-
- uint8_t* bytes = NULL;
- intptr_t bytes_len = 0;
- bool is_typed_data = false;
- if (Dart_IsTypedData(object)) {
- is_typed_data = true;
- Dart_TypedData_Type typ;
- ThrowIfError(Dart_TypedDataAcquireData(
- object, &typ, reinterpret_cast<void**>(&bytes), &bytes_len));
- } else {
- ASSERT(Dart_IsList(object));
- ThrowIfError(Dart_ListLength(object, &bytes_len));
- bytes = Dart_ScopeAllocate(bytes_len);
- ASSERT(bytes != NULL);
- ThrowIfError(Dart_ListGetAsBytes(object, 0, bytes, bytes_len));
- }
-
- object_ = object;
- bytes_ = bytes;
- bytes_len_ = bytes_len;
- is_typed_data_ = is_typed_data;
- }
-
- ~ScopedMemBuffer() {
- if (is_typed_data_) {
- ThrowIfError(Dart_TypedDataReleaseData(object_));
- }
- }
-
- uint8_t* get() const { return bytes_; }
- intptr_t length() const { return bytes_len_; }
-
- private:
- Dart_Handle object_;
- uint8_t* bytes_;
- intptr_t bytes_len_;
- bool is_typed_data_;
-
- DISALLOW_ALLOCATION();
- DISALLOW_COPY_AND_ASSIGN(ScopedMemBuffer);
-};
-
struct MagicNumberData {
static const intptr_t kMaxLength = 8;
diff --git a/runtime/bin/gen_snapshot.cc b/runtime/bin/gen_snapshot.cc
index bbda5dc..98654fe 100644
--- a/runtime/bin/gen_snapshot.cc
+++ b/runtime/bin/gen_snapshot.cc
@@ -147,14 +147,6 @@
#undef BOOL_OPTION_DEFINITION
DEFINE_ENUM_OPTION(snapshot_kind, SnapshotKind, snapshot_kind);
-DEFINE_STRING_OPTION_CB(embedder_entry_points_manifest, {
- Log::PrintErr(
- "Option --embedder_entry_points_manifest is no longer supported."
- " Use @pragma(\'vm:entry-point\') instead.\n");
- exit(kErrorExitCode);
-});
-DEFINE_STRING_OPTION_CB(url_mapping,
- { DartUtils::url_mapping->AddArgument(value); });
DEFINE_CB_OPTION(ProcessEnvironmentOption);
static bool IsSnapshottingForPrecompilation() {
@@ -173,9 +165,6 @@
" Where to find packages, that is, package:... imports. \n"
"--packages=<packages_file> \n"
" Where to find a package spec file \n"
-"--url_mapping=<mapping> \n"
-" Uses the URL mapping(s) specified on the command line to load the \n"
-" libraries. \n"
"--dependencies=<output-file> \n"
" Generates a Makefile with snapshot output files as targets and all \n"
" transitive imports as sources. \n"
@@ -940,10 +929,6 @@
const int EXTRA_VM_ARGUMENTS = 7;
CommandLineOptions vm_options(argc + EXTRA_VM_ARGUMENTS);
- // Initialize the URL mapping array.
- CommandLineOptions cmdline_url_mapping(argc);
- DartUtils::url_mapping = &cmdline_url_mapping;
-
// When running from the command line we assume that we are optimizing for
// throughput, and therefore use a larger new gen semi space size and a faster
// new gen growth factor unless others have been specified.
diff --git a/runtime/tools/create_snapshot_bin.py b/runtime/tools/create_snapshot_bin.py
index 599d17c..88da22e 100755
--- a/runtime/tools/create_snapshot_bin.py
+++ b/runtime/tools/create_snapshot_bin.py
@@ -54,11 +54,6 @@
result.add_option("--packages",
action="store", type="string",
help="package config file used to reasolve package: imports.")
- result.add_option("--url_mapping",
- default=[],
- action="append",
- help=("mapping from url to file name, used when generating snapshots " +
- "E.g.: --url_mapping=fileUri,/path/to/file.dart"))
result.add_option("-v", "--verbose",
help='Verbose output.',
default=False, action="store_true")
@@ -143,11 +138,6 @@
script_args.append(''.join([ "--isolate_snapshot_instructions=",
options.isolate_instructions_output_bin ]))
- # Next setup all url mapping options specified.
- for url_arg in options.url_mapping:
- url_mapping_argument = ''.join(["--url_mapping=", url_arg ])
- script_args.append(url_mapping_argument)
-
# Finally append the script name if one is specified.
if options.script:
script_args.append(options.script)
diff --git a/runtime/tools/dartfuzz/README.md b/runtime/tools/dartfuzz/README.md
index b4909ed..3545739 100644
--- a/runtime/tools/dartfuzz/README.md
+++ b/runtime/tools/dartfuzz/README.md
@@ -57,6 +57,7 @@
jit-[opt-][debug-]dbc = Dart JIT (simdbc)
jit-[opt-][debug-]dbc64 = Dart JIT (simdbc64)
aot-[debug-]x64 = Dart AOT (x64)
+ aot-[debug-]arm32 = Dart AOT (simarm)
aot-[debug-]arm64 = Dart AOT (simarm64)
kbc-int-[debug-]x64 = Dart KBC (interpreted bytecode)
kbc-mix-[debug-]x64 = Dart KBC (mixed-mode bytecode)
diff --git a/runtime/tools/dartfuzz/dartfuzz_test.dart b/runtime/tools/dartfuzz/dartfuzz_test.dart
index d92cd8a..35d9a56 100644
--- a/runtime/tools/dartfuzz/dartfuzz_test.dart
+++ b/runtime/tools/dartfuzz/dartfuzz_test.dart
@@ -38,7 +38,7 @@
if (res.exitCode == -sigkill) {
return new TestResult(ResultCode.timeout, res.stdout);
} else if (res.exitCode != 0) {
- return new TestResult(ResultCode.error, res.stdout);
+ return new TestResult(ResultCode.error, res.stderr);
}
return new TestResult(ResultCode.success, res.stdout);
}
@@ -336,8 +336,20 @@
numDivergences++;
print(
'\n${isolate}: !DIVERGENCE! $version:$seed (output=${outputDivergence})');
- if (showStats && outputDivergence) {
- print('out1:\n${result1.output}\nout2:\n${result2.output}\n');
+ if (outputDivergence) {
+ // Only report the actual output divergence details when requested,
+ // since this output may be lengthy and should be reproducable anyway.
+ if (showStats) {
+ print('\nout1:\n${result1.output}\nout2:\n${result2.output}\n');
+ }
+ } else {
+ // For any other divergence, always report what went wrong.
+ if (result1.code != ResultCode.success) {
+ print('\nfail1:\n${result1.output}\n');
+ }
+ if (result2.code != ResultCode.success) {
+ print('\nfail2:\n${result2.output}\n');
+ }
}
}
@@ -452,7 +464,7 @@
// Random when not set.
if (mode == null || mode == '') {
// Pick a mode at random (cluster), different from other.
- int cluster_modes = modes.length - 15;
+ int cluster_modes = modes.indexOf('aot-debug-arm32');
Random rand = new Random();
do {
mode = modes[rand.nextInt(cluster_modes)];
@@ -502,7 +514,9 @@
'kbc-cmp-x64',
'kbc-mix-x64',
// Times out often:
+ 'aot-debug-arm32',
'aot-debug-arm64',
+ 'aot-arm32',
'aot-arm64',
// Too many divergences (due to arithmetic):
'js',
@@ -519,6 +533,9 @@
'jit-opt-arm64',
'jit-opt-dbc',
'jit-opt-dbc64',
+ // Not supported:
+ 'aot-debug-ia32',
+ 'aot-ia32',
];
}
diff --git a/runtime/vm/service/service.md b/runtime/vm/service/service.md
index 3929ba0..50b2691c 100644
--- a/runtime/vm/service/service.md
+++ b/runtime/vm/service/service.md
@@ -150,7 +150,7 @@
"jsonrpc": "2.0",
"method": "streamListen",
"params": {
- "streamId": "GC",
+ "streamId": "GC"
},
"id": "2"
}
diff --git a/runtime/vm/service/service_dev.md b/runtime/vm/service/service_dev.md
index 39dd081..afb751c 100644
--- a/runtime/vm/service/service_dev.md
+++ b/runtime/vm/service/service_dev.md
@@ -150,7 +150,7 @@
"jsonrpc": "2.0",
"method": "streamListen",
"params": {
- "streamId": "GC",
+ "streamId": "GC"
},
"id": "2"
}
diff --git a/runtime/vm/v8_snapshot_writer.cc b/runtime/vm/v8_snapshot_writer.cc
index ce24a25..2ddd3e0 100644
--- a/runtime/vm/v8_snapshot_writer.cc
+++ b/runtime/vm/v8_snapshot_writer.cc
@@ -75,7 +75,9 @@
ASSERT(reference.offset_or_name >= 0);
info->edges->Add({
- reference.reference_type == Reference::kElement ? kElement : kProperty,
+ static_cast<intptr_t>(reference.reference_type == Reference::kElement
+ ? kElement
+ : kProperty),
reference.offset_or_name,
reference.to_object_id,
});
diff --git a/sdk/lib/libraries.json b/sdk/lib/libraries.json
index a178398..3265de2 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/async_star/async_star_await_for_test.dart b/tests/language_2/async_star/async_star_await_for_test.dart
deleted file mode 100644
index 0493a1f..0000000
--- a/tests/language_2/async_star/async_star_await_for_test.dart
+++ /dev/null
@@ -1,376 +0,0 @@
-// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Test that `await for` and `async*` interact correctly.
-
-// An `await for` must pause its subscription immediately
-// if the `await for` body does anything asynchronous
-// (any `await`, `await for`, or pausing at a `yield`/`yield*`)
-// A pause happening synchronously in an event delivery
-// must pause the `sync*` method at the `yield` sending the event.
-// A break happening synchronously in an event delivery,
-// or while paused at a `yield`, must exit at that `yield`.
-
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-Stream<int> stream(List<String> log) async* {
- log.add("^");
- try {
- log.add("?1");
- yield 1;
- log.add("?2");
- yield 2;
- log.add("?3");
- yield 3;
- } finally {
- log.add(r"$");
- }
-}
-
-Stream<int> consume(List<String> log,
- {int breakAt = -1,
- int yieldAt = -1,
- int yieldStarAt = -1,
- int pauseAt = -1}) async* {
- // Create stream.
- var s = stream(log);
- log.add("(");
- // The "consume loop".
- await for (var event in s) {
- // Should be acting synchronously wrt. the delivery of the event.
- // The source stream should be at the yield now.
- log.add("!$event");
- if (event == pauseAt) {
- log.add("p$event[");
- // Async operation causes subscription to pause.
- // Nothing should happen in the source stream
- // until the end of the loop body where the subscription is resumed.
- await Future.delayed(Duration(microseconds: 1));
- log.add("]");
- }
- if (event == yieldAt) {
- log.add("y$event[");
- // Yield may cause subscription to pause or cancel.
- // This loop should stay at the yield until the event has been delieverd.
- // If the receiver pauses or cancels, we delay or break the loop here.
- yield event;
- log.add("]");
- }
- if (event == yieldStarAt) {
- log.add("Y$event[");
- // Yield* will always cause the subscription for this loop to pause.
- // If the listener pauses, this stream is paused. If the listener cancels,
- // this stream is cancelled, and the yield* acts like return, cancelling
- // the loop subscription and waiting for the cancel future.
- yield* Stream<int>.fromIterable([event]);
- log.add("]");
- }
- if (event == breakAt) {
- log.add("b$event");
- // Breaks the loop. This cancels the loop subscription and waits for the
- // cancel future.
- break;
- }
- }
- // Done event from stream or cancel future has completed.
- log.add(")");
-}
-
-main() async {
- asyncStart();
-
- // Just run the loop over the stream. The consume stream emits no events.
- {
- var log = <String>[];
- await for (var _ in consume(log)) {
- throw "unreachable";
- }
- await Future.delayed(Duration(milliseconds: 1));
- var trace = log.join("");
- Expects.equals(r"(^?1!1?2!2?3!3$)", trace, "straight through");
- }
-
- // Pause at 1, then resume.
- // Consume loop forces a pause when it receives the 1 event.
- // Nothing should happen until that pause is resumed.
- {
- var log = <String>[];
- await for (var _ in consume(log, pauseAt: 1)) {
- throw "unreachable";
- }
- await Future.delayed(Duration(milliseconds: 10));
- var trace = log.join("");
- String message = "pause at 1";
- if (trace.contains("p1[?2")) {
- message += " (did not pause in time)";
- }
- Expects.equals(r"(^?1!1p1[]?2!2?3!3$)", trace, message);
- }
-
- // Break at 1.
- // Consume loop breaks after receiving the 1 event.
- // The consume stream emits no events.
- {
- var log = <String>[];
- await for (var _ in consume(log, breakAt: 1)) {
- throw "unreachable";
- }
- await Future.delayed(Duration(milliseconds: 10));
- var trace = log.join("");
- String message = "break at 1";
- if (trace.contains("b1?2")) {
- message += " (did not cancel in time)";
- }
- Expects.equals(r"(^?1!1b1$)", trace, message);
- }
-
- // Pause then break at 1.
- // Consume loop pauses after receiving the 1 event,
- // then breaks before resuming. It should still be at the yield.
- // The consume stream emits no events.
- {
- var log = <String>[];
- await for (var _ in consume(log, pauseAt: 1, breakAt: 1)) {
- throw "unreachable";
- }
- await Future.delayed(Duration(milliseconds: 10));
- var trace = log.join("");
- String message = "pause then break at 1";
- if (trace.contains("p1[?2")) {
- message += " (did not pause in time)";
- }
- if (trace.contains("b1?2")) {
- message += " (did not cancel in time)";
- }
- Expects.equals(r"(^?1!1p1[]b1$)", trace, message);
- }
-
- // Yield at 1.
- // The consume loop re-emits the 1 event.
- // The test loop should receive that event while the consume loop is still
- // at the yield statement.
- // The consume loop may or may not pause, it should make no difference.
- {
- var log = <String>[];
- await for (var s in consume(log, yieldAt: 1)) {
- log.add("e$s");
- }
- await Future.delayed(Duration(milliseconds: 10));
- var trace = log.join("");
- String message = "yield at 1";
- if (trace.contains("y1[?2")) {
- message += " (did not wait for delivery)";
- }
- Expects.equals(r"(^?1!1y1[e1]?2!2?3!3$)", trace, message);
- }
-
- // Yield at 1, then pause at yield.
- // The consume loop re-emits the 1 event.
- // The test loop should receive that event while the consume loop is still
- // at the yield statement.
- // The test loop then pauses.
- // Nothing should happen in either the original yield
- // or the consume-function yield until the test loop ends.
- {
- var log = <String>[];
- await for (var s in consume(log, yieldAt: 1)) {
- log.add("e$s<");
- // Force pause at yield.
- await Future.delayed(Duration(milliseconds: 1));
- log.add(">");
- }
- await Future.delayed(Duration(milliseconds: 10));
- var trace = log.join("");
- String message = "yield at 1, pause at yield";
- if (trace.contains("y1[?2")) {
- message += " (did not wait for delivery)";
- }
- if (trace.contains("e1<?2")) {
- message += " (did not pause in time)";
- }
- Expects.equals(r"(^?1!1y1[e1<>]?2!2?3!3$)", trace, message);
- }
-
- // Yield at 1, then break at yield.
- // The consume loop re-emits the 1 event.
- // The test loop should receive that event while the consume loop is still
- // at the yield statement.
- // The test loop then breaks. That makes the consume loop yield return,
- // breaking the consume loop, which makes the source yield return.
- {
- var log = <String>[];
- await for (var s in consume(log, yieldAt: 1)) {
- log.add("e${s}B$s");
- break; // Force break at yield*.
- }
- await Future.delayed(Duration(milliseconds: 10));
- var trace = log.join("");
- String message = "yield at 1, break at yield";
- if (trace.contains("y1[?2")) {
- message += " (did not wait for delivery)";
- }
- if (trace.contains("B1?2")) {
- message += " (did not break in time)";
- }
- Expects.equals(r"(^?1!1y1[e1B1$)", trace, message);
- }
-
- // Yield* at 1.
- // The consume loop re-emits a stream containing the 1 event.
- // The test loop should receive that event before the consume loop
- // continues from the `yield*`, which again happens before the source
- // stream continues from its `yield`.
- {
- var log = <String>[];
- await for (var s in consume(log, yieldStarAt: 1)) {
- log.add("e$s");
- }
- await Future.delayed(Duration(milliseconds: 10));
- var trace = log.join("");
- String message = "yield* at 1";
- if (trace.contains("Y1[?2")) {
- message += " (did not wait for delivery)";
- }
- Expects.equals(r"(^?1!1Y1[e1]?2!2?3!3$)", trace, message);
- }
-
- // Yield* at 1, pause at yield.
- // The consume loop re-emits a stream containing the 1 event.
- // The test loop should receive that event before the consume loop
- // continues from the `yield*`. The test loop then force a pause.
- // Nothing further should happen during that pause.
- {
- var log = <String>[];
- await for (var s in consume(log, yieldStarAt: 1)) {
- log.add("e$s<");
- await Future.delayed(Duration(milliseconds: 1)); // force pause.
- log.add(">");
- }
- await Future.delayed(Duration(milliseconds: 10));
- var trace = log.join("");
- String message = "yield* then pause at 1";
- if (trace.contains("Y1[?2")) {
- message += " (did not wait for delivery)";
- }
- if (trace.contains("e1<?2")) {
- message += " (did not pause in time)";
- }
- Expects.equals(r"(^?1!1Y1[e1<>]?2!2?3!3$)", trace, message);
- }
-
- // Yield* at 1, then break at 1.
- // The consume loop re-emits a stream containing the 1 event.
- // The test loop should receive that event before the consume loop
- // continues from the `yield*`.
- // When the consume loop continues, it breaks,
- // forcing the waiting source yield to return.
- {
- var log = <String>[];
- await for (var s in consume(log, yieldStarAt: 1, breakAt: 1)) {
- log.add("e$s");
- }
- await Future.delayed(Duration(milliseconds: 10));
- var trace = log.join("");
- String message = "yield* then pause at 1";
- if (trace.contains("Y1[?2")) {
- message += " (did not wait for delivery)";
- }
- Expects.equals(r"(^?1!1Y1[e1]b1$)", trace, message);
- }
-
- // Yield* at 1, pause at yield, then break at 1.
- // The consume loop re-emits a stream containing the 1 event.
- // The test loop should receive that event before the consume loop
- // continues from the `yield*`. After the `yield*`, the consume loop breaks.
- // This forces the waiting source yield to return.
- {
- var log = <String>[];
- await for (var s in consume(log, yieldStarAt: 1, breakAt: 1)) {
- log.add("e$s<");
- await Future.delayed(Duration(milliseconds: 1)); // force pause.
- log.add(">");
- }
- await Future.delayed(Duration(milliseconds: 10));
- var trace = log.join("");
- String message = "yield* then pause at 1";
- Expects.equals(r"(^?1!1Y1[e1<>]b1$)", trace, message);
- }
-
- // Yield* at 1, break at yield.
- // The consume loop re-emits a stream containing the 1 event.
- // The test loop should receive that event before the consume loop
- // continues from the `yield*`. The test loop then breaks,
- // forcing the two waiting yields to return.
- {
- var log = <String>[];
- await for (var s in consume(log, yieldStarAt: 1)) {
- log.add("e${s}B$s");
- break;
- }
- await Future.delayed(Duration(milliseconds: 10));
- var trace = log.join("");
- String message = "yield* then break at 1";
- if (trace.contains("Y1[?2")) {
- message += " (did not deliver event in time)";
- }
- if (trace.contains("e1?2")) {
- message += " (did not cancel in time)";
- }
- Expects.equals(r"(^?1!1Y1[e1B1$)", trace, message);
- }
-
- // Yield* at 1, pause at yield, then break at yield.
- // The consume loop re-emits a stream containing the 1 event.
- // The test loop should receive that event before the consume loop
- // continues from the `yield*`. The test loop then forces a pause,
- // and then breaks before that pause is resumed.
- // This forces the two waiting yields to return.
- {
- var log = <String>[];
- await for (var s in consume(log, yieldStarAt: 1)) {
- log.add("e$s<");
- await Future.delayed(Duration(milliseconds: 1)); // force pause.
- log.add(">B$s");
- break; // And break.
- }
- await Future.delayed(Duration(milliseconds: 10));
- var trace = log.join("");
- String message = "yield* then pause then break at 1";
- Expects.equals(r"(^?1!1Y1[e1<>B1$)", trace, message);
- }
-
- Expects.summarize();
- asyncEnd();
-}
-
-class Expects {
- static var _errors = [];
- static int _tests = 0;
- static void summarize() {
- if (_errors.isNotEmpty) {
- var buffer = StringBuffer();
- for (var es in _errors) {
- buffer.writeln("FAILURE:");
- buffer.writeln(es[0]); // error
- buffer.writeln(es[1]); // stack trace
- }
- ;
- buffer.writeln("Expectations failed: ${_errors.length}"
- ", succeeded: ${_tests - _errors.length}");
- throw ExpectException(buffer.toString());
- }
- }
-
- static void equals(o1, o2, String message) {
- _tests++;
- try {
- Expect.equals(o1, o2, message);
- } on ExpectException catch (e) {
- var stack = StackTrace.current;
- _errors.add([e, stack]);
- }
- }
-}
diff --git a/tests/language_2/async_star/async_star_cancel_test.dart b/tests/language_2/async_star/async_star_cancel_test.dart
deleted file mode 100644
index c23c6ba..0000000
--- a/tests/language_2/async_star/async_star_cancel_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Test that stream cancellation is checked immediately after delivering the
-// event, and before continuing after the yield.
-
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-main() async {
- asyncStart();
- var log = [];
- Stream<int> f() async* {
- try {
- log.add("-1");
- yield 1;
- log.add("-2");
- yield 2;
- } finally {
- log.add("x");
- }
- }
-
- var completer = Completer();
- var s;
- s = f().listen((e) {
- log.add("+$e");
- // The `cancel` operation makes all `yield` operations act as returns.
- // It should make the `finally` block in `f` log an "x",
- // and nothing else.
- completer.complete(s.cancel());
- }, onError: (e) {
- // Should never be reached, but if it does, we'll make the await
- // below terminate.
- completer.complete(new Future.sync(() {
- Expect.fail("$e");
- }));
- }, onDone: () {
- completer.complete(null);
- });
- await completer.future;
- Expect.listEquals(["-1", "+1", "x"], log, "cancel");
- asyncEnd();
-}
diff --git a/tests/language_2/async_star/async_star_invalid_test.dart b/tests/language_2/async_star/async_star_invalid_test.dart
deleted file mode 100644
index 529cf25..0000000
--- a/tests/language_2/async_star/async_star_invalid_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// Test that various invalid uses of `yield` are disallowed.
-
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-var yield = 42;
-
-main() async {
- asyncStart();
- Stream<String> f() async* {
- // Invalid syntax.
- yield ("a", "b"); //# 01: compile-time error
- yield yield "twice"; //# 02: compile-time error
-
- // Valid but curious syntax.
- yield throw "throw"; //# 03: runtime error
-
- // Type error.
- yield* "one"; //# 04: compile-time error
-
- label: yield "ok";
- }
- var completer = Completer();
- f().listen(completer.complete, onError: completer.completeError,
- onDone: () {
- if (!completer.isCompleted) completer.completeError("not ok?");
- });
- Expect.equals("ok", await completer.future);
- asyncEnd();
-}
diff --git a/tests/language_2/async_star/async_star_test.dart b/tests/language_2/async_star/async_star_test.dart
deleted file mode 100644
index 819039e..0000000
--- a/tests/language_2/async_star/async_star_test.dart
+++ /dev/null
@@ -1,195 +0,0 @@
-// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-main() async {
- asyncStart();
- // Normal operations.
- {
- Stream<int> f() async* {
- yield 1;
- yield 2;
- yield 3;
- }
-
- Expect.listEquals([1, 2, 3], await f().toList(), "basic1");
- }
-
- {
- Stream<int> f() async* {
- yield 1;
- yield 2;
- yield 3;
- }
-
- var log = [];
- var completer = Completer();
- f().listen(log.add,
- onError: (e) {
- // Shouldn't be reached.
- completer.complete(new Future.sync(() {
- Expect.fail("$e");
- }));
- },
- onDone: () => completer.complete(null));
- await completer.future;
- Expect.listEquals([1, 2, 3], log, "basic2");
- }
-
- {
- var log = [];
- Stream<int> f() async* {
- log.add("-1");
- yield 1;
- log.add("-2");
- yield 2;
- }
-
- await f().forEach((e) {
- log.add("+$e");
- });
- Expect.listEquals(["-1", "+1", "-2", "+2"], log, "basic3");
- }
-
- {
- var log = [];
- Stream<int> f() async* {
- log.add("-1");
- yield 1;
- log.add("-2");
- yield 2;
- }
-
- await for (var e in f()) {
- log.add("+$e");
- }
- Expect.listEquals(["-1", "+1", "-2", "+2"], log, "basic4");
- }
-
- // async
- {
- Stream<int> f() async* {
- yield 1;
- await Future(() {});
- yield 2;
- await Future(() {});
- yield 3;
- }
-
- Expect.listEquals([1, 2, 3], await f().toList(), "async");
- }
-
- // Yield*
- {
- Stream<int> f(n) async* {
- yield n;
- if (n == 0) return;
- yield* f(n - 1);
- yield n;
- }
-
- Expect.listEquals([3, 2, 1, 0, 1, 2, 3], await f(3).toList(), "yield*");
- }
-
- // Errors
- {
- var log = [];
- Stream<int> f() async* {
- yield 1;
- throw "error";
- }
-
- await f().handleError((e) {
- log.add(e);
- }).forEach(log.add);
- Expect.listEquals([1, "error"], log, "error");
- }
-
- {
- var log = [];
- Stream<int> f() async* {
- yield 1;
- yield* Future<int>.error("error").asStream(); // Emits error as error.
- yield 3;
- }
-
- await f().handleError((e) {
- log.add(e);
- }).forEach(log.add);
- Expect.listEquals([1, "error", 3], log, "error2");
- }
-
- // Pause is checked after delivering event.
- {
- var log = [];
- Stream<int> f() async* {
- log.add("-1");
- yield 1;
- log.add("-2");
- yield 2;
- }
-
- var completer = Completer();
- var s;
- s = f().listen((e) {
- log.add("+$e");
- s.pause(Future(() {}));
- log.add("++$e");
- }, onError: (e) {
- completer.complete(new Future.sync(() {
- Expect.fail("$e");
- }));
- }, onDone: () => completer.complete(null));
- await completer.future;
- Expect.listEquals(["-1", "+1", "++1", "-2", "+2", "++2"], log, "pause");
- }
-
- // Await for-loop pauses between events.
- {
- var log = [];
- Stream<int> f() async* {
- log.add("-1");
- yield 1;
- log.add("-2");
- yield 2;
- }
-
- await for (var e in f()) {
- log.add("+$e");
- await Future(() {}); // One timer tick.
- log.add("++$e");
- }
- Expect.listEquals(["-1", "+1", "++1", "-2", "+2", "++2"], log, "looppause");
- }
-
- // Await for-loop break works immediately.
- {
- var log = [];
- Stream<int> f() async* {
- try {
- log.add("-1");
- yield 1;
- log.add("-2");
- yield 2;
- log.add("-3");
- yield 3;
- } finally {
- log.add("x");
- }
- }
-
- await for (var e in f()) {
- log.add("+$e");
- await Future(() {}); // One timer tick, pauses function at yield.
- log.add("++$e");
- if (e == 2) break;
- }
- Expect.listEquals(
- ["-1", "+1", "++1", "-2", "+2", "++2", "x"], log, "loop-pause-break");
- }
- asyncEnd();
-}
diff --git a/tests/language_2/language_2_dart2js.status b/tests/language_2/language_2_dart2js.status
index 1edba47..a2102b3 100644
--- a/tests/language_2/language_2_dart2js.status
+++ b/tests/language_2/language_2_dart2js.status
@@ -5,8 +5,6 @@
[ $compiler == dart2js ]
arithmetic_int64_test: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-async_star/async_star_await_for_test: RuntimeError
-async_star/async_star_cancel_test: RuntimeError
async_star_cancel_while_paused_test: RuntimeError # Issue 22853
bit_operations_test: RuntimeError, OK # non JS number semantics
bit_operations_test/03: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
diff --git a/tests/language_2/language_2_dartdevc.status b/tests/language_2/language_2_dartdevc.status
index 9e924cf..f8c2bfc 100644
--- a/tests/language_2/language_2_dartdevc.status
+++ b/tests/language_2/language_2_dartdevc.status
@@ -12,9 +12,6 @@
accessor_conflict_import_test: CompileTimeError # Issue 25626
additional_interface_adds_optional_args_test: CompileTimeError # Issue #30568
assertion_test: RuntimeError # Issue 30326; Expect.equals(expected: <1>, actual: <0>) fails.
-async_star/async_star_await_for_test: RuntimeError
-async_star/async_star_cancel_test: RuntimeError
-async_star/async_star_test: RuntimeError
async_star_test/01: RuntimeError
async_star_test/03: RuntimeError
async_star_test/04: RuntimeError
@@ -161,8 +158,6 @@
void/void_type_usage_test/final_local_for_in2: MissingCompileTimeError
[ $compiler == dartdevk ]
-async_star/async_star_cancel_test: RuntimeError
-async_star/async_star_test: RuntimeError
built_in_identifier_type_annotation_test/dynamic-funarg: RuntimeError # Issue 30450, test name contains hyphen
built_in_identifier_type_annotation_test/dynamic-funret: RuntimeError # Issue 30450, test name contains hyphen
built_in_identifier_type_annotation_test/dynamic-list: RuntimeError # Issue 30450, test name contains hyphen
@@ -183,8 +178,6 @@
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
@@ -322,7 +315,6 @@
[ $compiler == dartdevc || $compiler == dartdevk ]
arithmetic_int64_test: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
async_covariant_type_test: RuntimeError # Check too late
-async_star/async_star_await_for_test: RuntimeError
async_star_cancel_while_paused_test: RuntimeError # Issue 29920; Uncaught Expect.listEquals(list length, expected: <4>, actual: <3>) fails: Next element <*3>
async_star_pause_test: RuntimeError # Uncaught Expect.listEquals(at index 2, expected: <0+>, actual: <0!>) fails
async_star_test/02: RuntimeError
diff --git a/tests/language_2/language_2_kernel.status b/tests/language_2/language_2_kernel.status
index bd08604..b514980 100644
--- a/tests/language_2/language_2_kernel.status
+++ b/tests/language_2/language_2_kernel.status
@@ -359,10 +359,6 @@
vm/precompiled_static_initializer_test: Pass, Slow
[ $compiler == dartkp && $mode == product && $runtime == dart_precompiled && $strong ]
-async_star/async_star_await_for_test: RuntimeError
-async_star/async_star_cancel_test: RuntimeError
-async_star/async_star_invalid_test/none: RuntimeError
-async_star/async_star_test: RuntimeError
vm/type_vm_test/28: MissingRuntimeError
vm/type_vm_test/29: MissingRuntimeError
vm/type_vm_test/30: MissingRuntimeError
@@ -410,13 +406,6 @@
assertion_initializer_const_error2_test/cc11: Crash
async_await_test: RuntimeError
async_return_types_test/nestedFuture: Fail
-async_star/async_star_cancel_test: DartkCrash
-async_star/async_star_invalid_test/01: DartkCrash
-async_star/async_star_invalid_test/02: DartkCrash
-async_star/async_star_invalid_test/03: DartkCrash
-async_star/async_star_invalid_test/04: DartkCrash
-async_star/async_star_invalid_test/none: DartkCrash
-async_star/async_star_test: DartkCrash
compile_time_constant_checked_test/02: MissingCompileTimeError
covariance_type_parameter_test/01: RuntimeError
covariance_type_parameter_test/02: RuntimeError
diff --git a/tests/language_2/language_2_precompiled.status b/tests/language_2/language_2_precompiled.status
index 6b7afa9..858a0572 100644
--- a/tests/language_2/language_2_precompiled.status
+++ b/tests/language_2/language_2_precompiled.status
@@ -36,13 +36,4 @@
vm/no_such_args_error_message_vm_test: Skip
vm/no_such_method_error_message_callable_vm_test: Skip
vm/no_such_method_error_message_vm_test: Skip
-vm/regress_28325_test: Skip
-
-[ $runtime == dart_precompiled && ($compiler == dartkp || $compiler == precompiler) ]
-async_star/async_star_await_for_test: RuntimeError
-async_star/async_star_cancel_test: RuntimeError
-async_star/async_star_invalid_test/01: MissingCompileTimeError
-async_star/async_star_invalid_test/02: MissingCompileTimeError
-async_star/async_star_invalid_test/04: MissingCompileTimeError
-async_star/async_star_invalid_test/none: RuntimeError
-async_star/async_star_test: RuntimeError
+vm/regress_28325_test: Skip
\ No newline at end of file
diff --git a/tests/language_2/language_2_vm.status b/tests/language_2/language_2_vm.status
index 47d27f2..b696b0f 100644
--- a/tests/language_2/language_2_vm.status
+++ b/tests/language_2/language_2_vm.status
@@ -18,9 +18,6 @@
set_literals/*: Skip
[ $runtime == vm ]
-async_star/async_star_await_for_test: RuntimeError
-async_star/async_star_cancel_test: RuntimeError
-async_star/async_star_test: RuntimeError
set_literals/*: Skip
[ $arch == arm64 && $runtime == vm ]
diff --git a/tests/standalone_2/standalone_2_kernel.status b/tests/standalone_2/standalone_2_kernel.status
index 2935167..081a84f 100644
--- a/tests/standalone_2/standalone_2_kernel.status
+++ b/tests/standalone_2/standalone_2_kernel.status
@@ -215,7 +215,7 @@
io/http_advanced_test: Skip # Timeout
io/http_auth_digest_test: Crash
io/http_auth_test: Skip # Timeout
-io/http_basic_test: Pass, Crash # Sporadic crash, issue 33824
+io/http_basic_test: Pass, Timeout # Issue 28046
io/http_proxy_advanced_test: Skip # Timeout
io/http_read_test: Skip # Timeout
io/non_utf8_directory_test: Pass, Timeout
diff --git a/tools/VERSION b/tools/VERSION
index e1cbe2b..146c6cc 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -28,4 +28,4 @@
MINOR 2
PATCH 0
PRERELEASE 1
-PRERELEASE_PATCH 0
+PRERELEASE_PATCH 1
diff --git a/utils/dartdevc/BUILD.gn b/utils/dartdevc/BUILD.gn
index 04dd2fc..13ccd28 100644
--- a/utils/dartdevc/BUILD.gn
+++ b/utils/dartdevc/BUILD.gn
@@ -9,6 +9,7 @@
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 @@
":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 @@
inputs = [
sdk_dill,
+ sdk_libraries_json,
sdk_summary,
"$target_gen_dir/dartdevc_files.stamp",
"$root_gen_dir/pkg_files.stamp",
@@ -348,6 +350,7 @@
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",